android_kernel_samsung_msm8976/fs/nfs
Neil Brown 1f4eab7e7c NFS: Set meaningful value for fattr->time_start in readdirplus results.
Don't use uninitialsed value for fattr->time_start in readdirplus results.

The 'fattr' structure filled in by nfs3_decode_direct does not get a
value for ->time_start set.
Thus if an entry is for an inode that we already have in cache,
when nfs_readdir_lookup calls nfs_fhget, it will call nfs_refresh_inode
and may update the inode with out-of-date information.

Directories are read a page at a time, so each page could have a
different timestamp that "should" be used to set the time_start for
the fattr for info in that page.  However storing the timestamp per
page is awkward.  (We could stick in the first 4 bytes and only read 4092
bytes, but that is a bigger code change than I am interested it).

This patch ignores the readdir_plus attributes if a readdir finds the
information already in cache, and otherwise sets ->time_start to the time
the readdir request was sent to the server.

It might be nice to store - in the directory inode - the time stamp for
the earliest readdir request that is still in the page cache, so that we
don't ignore attribute data that we don't have to.  This patch doesn't do
that.

Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2007-04-30 22:17:18 -07:00
..
callback.c [PATCH] knfsd: SUNRPC: Provide room in svc_rqst for larger addresses 2007-02-12 09:48:36 -08:00
callback.h [PATCH] xdr annotations: fs/nfs/callback* 2006-10-20 10:26:40 -07:00
callback_proc.c [PATCH] fs/nfs/callback* passes error values big-endian 2006-10-20 10:26:40 -07:00
callback_xdr.c [PATCH] knfsd: SUNRPC: Provide room in svc_rqst for larger addresses 2007-02-12 09:48:36 -08:00
client.c NFS: Added support to turn off the NFSv3 READDIRPLUS RPC. 2007-04-30 22:17:16 -07:00
delegation.c [PATCH] fs: Removing useless casts 2006-09-27 08:26:10 -07:00
delegation.h NFS: Rename struct nfs4_client to struct nfs_client 2006-09-22 23:24:31 -04:00
dir.c NFS: Set meaningful value for fattr->time_start in readdirplus results. 2007-04-30 22:17:18 -07:00
direct.c NFS: Fix a buffer overflow in the allocation of struct nfs_read/writedata 2007-04-30 22:17:07 -07:00
file.c [PATCH] mark struct inode_operations const 2 2007-02-12 09:48:46 -08:00
getroot.c NFSv4: Don't require that NFSv4 mount paths begin with '/' 2007-02-03 15:35:05 -08:00
idmap.c [PATCH] nfs: change uses of f_{dentry,vfsmnt} to use f_path 2006-12-08 08:28:41 -08:00
inode.c NFS: Fix an Oops in nfs_setattr() 2007-04-14 21:46:47 -07:00
internal.h NFS: Fix a buffer overflow in the allocation of struct nfs_read/writedata 2007-04-30 22:17:07 -07:00
iostat.h NFSv4: Fix an oops in nfs4_fill_super 2006-03-20 13:44:48 -05:00
Makefile NFS: Share NFS superblocks per-protocol per-server per-FSID 2006-09-22 23:24:37 -04:00
mount_clnt.c SUNRPC: RPC buffer size estimates are too large 2007-04-30 22:17:10 -07:00
namespace.c [PATCH] mark struct inode_operations const 2 2007-02-12 09:48:46 -08:00
nfs2xdr.c SUNRPC: RPC buffer size estimates are too large 2007-04-30 22:17:10 -07:00
nfs3acl.c NFSv3: Client-side nfsacl caching fix 2006-06-09 09:34:11 -04:00
nfs3proc.c NFS: Remove nfs_readpage_sync() 2007-02-03 15:35:06 -08:00
nfs3xdr.c SUNRPC: RPC buffer size estimates are too large 2007-04-30 22:17:10 -07:00
nfs4_fs.h Merge branch 'master' of /home/trondmy/kernel/linux-2.6/ 2007-02-12 22:43:25 -08:00
nfs4namespace.c NFSv4: /proc/mounts displays the wrong server name for referrals 2007-02-03 15:35:10 -08:00
nfs4proc.c Merge branch 'master' of /home/trondmy/kernel/linux-2.6/ 2007-02-12 22:43:25 -08:00
nfs4renewd.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
nfs4state.c NFS: Share NFS superblocks per-protocol per-server per-FSID 2006-09-22 23:24:37 -04:00
nfs4xdr.c SUNRPC: RPC buffer size estimates are too large 2007-04-30 22:17:10 -07:00
nfsroot.c NFS: switch NFSROOT to use new rpcbind client 2007-04-30 22:17:14 -07:00
pagelist.c NFS: Use pgoff_t in structures and functions that pass page cache offsets 2007-04-30 22:17:09 -07:00
proc.c NFS: Remove nfs_readpage_sync() 2007-02-03 15:35:06 -08:00
read.c NFS: Fix a buffer overflow in the allocation of struct nfs_read/writedata 2007-04-30 22:17:07 -07:00
super.c NFS: Added support to turn off the NFSv3 READDIRPLUS RPC. 2007-04-30 22:17:16 -07:00
symlink.c [PATCH] mark struct inode_operations const 2 2007-02-12 09:48:46 -08:00
sysctl.c [PATCH] nfs: fix congestion control 2007-03-16 19:25:05 -07:00
unlink.c NFS: kzalloc conversion in fs/nfs 2006-03-20 13:44:10 -05:00
write.c NFS: Use pgoff_t in structures and functions that pass page cache offsets 2007-04-30 22:17:09 -07:00