On Wed, Mar 25, 2009 at 07:06:28PM +0530, Krishna Kumar wrote: > From: Krishna Kumar <krkumar2@xxxxxxxxxx> > > ADD infrastructure in terms of new structures. > > Signed-off-by: Krishna Kumar <krkumar2@xxxxxxxxxx> > --- > > fs/nfsd/vfs.c | 35 +++++++++++++++++++++++++++++++++++ > 1 file changed, 35 insertions(+) > > diff -ruNp org/fs/nfsd/vfs.c new1/fs/nfsd/vfs.c > --- org/fs/nfsd/vfs.c 2009-03-25 17:31:39.000000000 +0530 > +++ new1/fs/nfsd/vfs.c 2009-03-25 17:39:43.000000000 +0530 > @@ -88,6 +88,41 @@ struct raparm_hbucket { > #define RAPARM_HASH_MASK (RAPARM_HASH_SIZE-1) > static struct raparm_hbucket raparm_hash[RAPARM_HASH_SIZE]; > > +/* > + * This is a cache of file handles to quicken file lookup. This also > + * helps prevent multiple open/close of a file when a client reads it. > + * > + * If you increase the number of cached files very much, you'll need to > + * add a hash table here. I'm a little confused here--what do you mean by "add a hash table here"? --b. > + */ > +struct fhcache { > + struct fhcache *p_next; > + > + /* Hashed on this parameter */ > + __u32 p_auth; > + > + /* Cached information */ > + struct file *p_filp; > + struct svc_export *p_exp; > + > + /* Refcount for overwrite */ > + atomic_t p_count; > + > + /* When this entry expires */ > + unsigned long p_expires; > + > + unsigned int p_hindex; > +}; > + > +struct fhcache_hbucket { > + struct fhcache *pb_head; > + spinlock_t pb_lock; > +} ____cacheline_aligned_in_smp; > + > +#define FHPARM_HASH_BITS 8 > +#define FHPARM_HASH_SIZE (1<<FHPARM_HASH_BITS) > +#define FHPARM_HASH_MASK (FHPARM_HASH_SIZE-1) > + > /* > * Called from nfsd_lookup and encode_dirent. Check if we have crossed > * a mount point. -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html