On Mon, 2012-04-30 at 14:40 -0400, bjschuma@xxxxxxxxxx wrote: > From: Bryan Schumaker <bjschuma@xxxxxxxxxx> > > I intend on creating a single nfs_fs_mount() function used by all our > mount paths. To avoid checking between new mounts and clone mounts, I > instead pass both structures to the get_super_cookie() function and let > this function decide the best way to handle the situation. > > Signed-off-by: Bryan Schumaker <bjschuma@xxxxxxxxxx> > --- > fs/nfs/fscache.c | 13 ++++++++----- > fs/nfs/fscache.h | 2 +- > fs/nfs/super.c | 4 ++-- > 3 files changed, 11 insertions(+), 8 deletions(-) > > diff --git a/fs/nfs/fscache.c b/fs/nfs/fscache.c > index ae65c16..35411f8 100644 > --- a/fs/nfs/fscache.c > +++ b/fs/nfs/fscache.c > @@ -64,18 +64,21 @@ void nfs_fscache_release_client_cookie(struct nfs_client *clp) > * either by the 'fsc=xxx' option to mount, or by inheriting it from the parent > * superblock across an automount point of some nature. > */ > -void nfs_fscache_get_super_cookie(struct super_block *sb, const char *uniq, > - struct nfs_clone_mount *mntdata) > +void nfs_fscache_get_super_cookie(struct super_block *sb, > + struct nfs_parsed_mount_data *parsed, > + struct nfs_clone_mount *cloned) > { > struct nfs_fscache_key *key, *xkey; > struct nfs_server *nfss = NFS_SB(sb); > struct rb_node **p, *parent; > + char *uniq = NULL; > int diff, ulen; > > - if (uniq) { > + if (parsed && parsed->fscache_uniq) { > + uniq = parsed->fscache_uniq; > ulen = strlen(uniq); > - } else if (mntdata) { > - struct nfs_server *mnt_s = NFS_SB(mntdata->sb); > + } else if (cloned) { > + struct nfs_server *mnt_s = NFS_SB(cloned->sb); Instead of passing in the whole nfs_clone_mount structure here, just in order to extract the uniquifier, why not pass in the struct nfs_fscache_key from cloned->sb? -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@xxxxxxxxxx www.netapp.com ��.n��������+%������w��{.n�����{��w���jg��������ݢj����G�������j:+v���w�m������w�������h�����٥