Skip site navigation (1)Skip section navigation (2)
Date:      20 Jul 1995 20:54:45 +0800
From:      peter@haywire.dialix.com (Peter Wemm)
To:        freebsd-current@freebsd.org
Subject:   Re: what's going on here? (NFSv3 problem?)
Message-ID:  <3uljml$r1t$1@haywire.DIALix.COM>
References:  <3uj6pg$3h3$1@haywire.DIALix.COM>, <Pine.BSF.3.91.950719164627.22916D-100000@minnow.render.com>

next in thread | previous in thread | raw e-mail | index | archive | help
dfr@render.com (Doug Rabson) writes:
>On 19 Jul 1995, Peter Wemm wrote:
>> Some time in the last few weeks, doing a ls on a large NFS mounted
>> directory..  It looks like the server is answering with the wrong
>> offset, but it used to work and the server hasn't changed lately
>> (like, years...  It's a vintage SVR4.0/386 system.)
>> 
>> The freebsd client has it mounted with a read and write size of 1024,
>> which struck me as odd that it appears to be asking for a 8192 byte
>> chunk...  It works fine with directory scans of smaller directories..
>> 
>> And yes, I'm just about to run fsirand on the server.. :-)
>> 
>> Puzzled, (I don't speak NFS, so please be gentle.. ;-)
>> -Peter
>> 

>I just checked and it appears that the size used for readdir requests 
>(NFS_DIRBLKSIZE) has increased from 1024 to 4096 in the nfsv3 change.  I 
>am not sure why though.  It is also a bit confusing that you are seeing 
>8k readdir requests - from the looks of it, they should be 4k.

Hmm. I noticed the following have changed (plus context) from:
#define NFS_WSIZE 8192			/* Def. write size */
#define NFS_RSIZE 8192			/* Def. read size */
#define NFS_MAXREADDIR NFS_MAXDATA	/* Max size of directory read */
to:
#define NFS_WSIZE 8192			/* Def. write size */
#define NFS_RSIZE 8192			/* Def. read size */
#define NFS_READDIRSIZE 8192		/* Def. size of directory read */

I think that's where the 8K readdir comes from..

>Try reducing NFS_DIRBLKSIZE in <nfs/nfs.h> to 1024 and see if it fixes 
>your problem.

I have not tried that yet, but increasing the mount blocksize from 1K
to the default of 8K solves the problem.

I then made a very large directory to test that it wasn't because the
directory was larger than the read packet size.

Perhaps there's a problem with the readdir packet reassembly?

-Peter


>--
>Doug Rabson, Microsoft RenderMorphics Ltd.	Mail:  dfr@render.com
>						Phone: +44 171 251 4411
>						FAX:   +44 171 251 0939




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3uljml$r1t$1>