On Tue, Jul 22, 2008 at 03:22:17PM -0700, Matt Simerson wrote:
> On Jul 22, 2008, at 3:08 PM, Miroslav Lachman wrote:
> >Matt Simerson wrote:
> >>Symptoms
> >>Deadlocks under heavy IO load on the ZFS file system with
> >>prefetch_disable=0. Setting vfs.zfs.prefetch_disable=1 results in
> >>a stable system.

> >
> >[...]
> >
> >>With vfs.zfs.prefetch_disable=1, a hang will occur within a few
> >>hours (no more than a day). If I keep the i/o load (measured via
> >>iostat) down to a low level (< 200 iops) then I still get hangs
> >>but less frequently (1-6 days). The only way I have found to
> >>prevent the hangs is by setting vfs.zfs.prefetch_disable=1.

> >
> >"With vfs.zfs.prefetch_disable=1, a hang will occur within...", did
> >you realy mean prefetch_disable=1 in this sentence? Your whole e-
> >mail seems that prefetch_disable=1 is good workaround, so I expect
> >you have prefetch_disable=0 previously which causes hangs...

> Aye. That is exactly what I meant. With vfs.zfs.prefetch_disable=1,
> I get a stable system. With vfs.zfs.prefetch_disable=0 (the default) I
> have frequent deadlocks.
> Matt
> Rant: I really wish that variable wasn't named in the negative,
> creating a double negative when prefetch_disable=0. IE, it should be
> named vfs.zfs.prefetch_enable instead. It's much easier to express in
> English that prefetch_enable=1 means ON and prefetch_enable=0 means
> OFF. There's also the matter than in some languages, a double or
> triple negative still means the negative case. %-\. I'd rather not
> have to guess what prefetch_disable=1 means.

I agree. We even discussed sysctl naming in the past AFAIR to use
exactly 'enable', not 'disable' variants. Although I want to track
Solaris as close as possible, that's why I'm using what they have. The
intent is to make it easier for people to use ZFS on both Solaris and
FreeBSD by not introducing small, but anoying differences.

Pawel Jakub Dawidek http://www.wheel.pl
pjd@FreeBSD.org http://www.FreeBSD.org
FreeBSD committer Am I Evil? Yes, I Am!

Version: GnuPG v2.0.4 (FreeBSD)