nfsd: fix failure to set eof in readdir in some situations
Subsystems (2)
PATCH 1/1 nfsd: fix failure to set eof in readdir in some situations
From: J. Bruce Fields <[email protected]>
Before 14f7dd632011bb89c035722edd6ea0d90ca6b078 "[PATCH] Copy XFS readdir hack into nfsd code", readdir_cd->err was reset to eof before each call to vfs_readdir; afterwards, it is set only once. Similarly, c002a6c7977320f95b5edede5ce4e0eeecf291ff "[PATCH] Optimise NFS readdir hack slightly", can cause us to exit without nfserr_eof set. Fix this.
This ensures the "eof" bit is set when needed in readdir replies. (The particular case I saw was an nfsv4 readdir of an empty directory, which returned with no entries (the protocol requires "." and ".." to be filtered out), but with eof unset.)
Cc David Woodhouse <[email protected]>
Cc Al Viro <[email protected]>
Signed-off-by J. Bruce Fields <[email protected]>
--- fs/nfsd/vfs.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
I'm queuing this up for 2.6.28.--b.
fs/nfsd/vfs.c +1 -0
@@ -1912,6 +1912,7 @@ static int nfsd_buffered_readdir(struct file *file, filldir_t func, de = (struct buffered_dirent *)((char *)de + reclen); } offset =vfs_llseek (file,0 ,SEEK_CUR ); + cdp->err = nfserr_eof;if (!buf.full)break ; }
Signature · 1 line
1.5.5.rc1