Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 7 Oct 2014 17:06:02 -0400 (EDT)
From:      Rick Macklem <rmacklem@uoguelph.ca>
To:        Garrett Wollman <wollman@csail.mit.edu>
Cc:        freebsd-fs@freebsd.org
Subject:   Re: 9.3 NFS client bug?
Message-ID:  <603326314.59995969.1412715962746.JavaMail.root@uoguelph.ca>
In-Reply-To: <1109402573.59384867.1412683413852.JavaMail.root@uoguelph.ca>

next in thread | previous in thread | raw e-mail | index | archive | help
I wrote:
> Garrett Wollman wrote:
> > <<On Fri, 3 Oct 2014 18:10:16 -0400 (EDT), Rick Macklem
> > <rmacklem@uoguelph.ca> said:
> > 
> > > 2 - Try an "oldnfs" mount and see if the old client exhibits the
> > > same behaviour.
> > 
> > Same behavior both old and new.  I'm doing binary search now to try
> > to
> > minimize the size of the workload that exhibits the issue.
> > 
> > -GAWollman
> > 
> By ay chance is your ZFS server allocating a ZFS inode (whatever they
> call it) with a fileno/inode# that doesn't fit in 32 bits?
> (There is a diagnostic printf w.r.t. this for NFSv4, but not NFSv3,
>  so you might try an NFSv4 mount. The printf starts with "NFSv4
>  fileid > 32..".)
> 
Oops, I've realized that this diagnostic won't help if the server is
a FreeBSD one, since the FreeBSD server just sets the high order 32bits
to 0s and not what the file system returns. (va_filerev is a "long", so
it is only 64bits on some arches, yikes.)

You could try what jhb@ suggested (try a UFS file system) or just use a
different ZFS volume that isn't very full, if you think the 32bit restriction
could have been exceeded.

Btw, I tried your bonnie++ command on my test machines, but they failed
part way through because they couldn't allocate boundary tags. (At least
now I can reproduce that easily, although it is the M_NOWAIT case where
the thread just loops in the kernel.)

rick

> Since d_fileno in "struct dirent" is 32bits, NFS just truncates the
> 64bit fileid to 32bits (or fills the high order 32bits with 0s for
> the server).
> ZFS is known to generate fileids with non-zero high order
> 32bits->busted.
> (And not at all easy to fix. I actually have a somewhat hackish idea
> for
>  a way to make 64bit d_fileno values work without busting backwards
>  compatibility.
>  I think I'll post that to freebsd-fs@ and see what others think?)
> 
> rick
> _______________________________________________
> freebsd-fs@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-fs
> To unsubscribe, send any mail to "freebsd-fs-unsubscribe@freebsd.org"
> 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?603326314.59995969.1412715962746.JavaMail.root>