On Thu, 28 Oct 2010 10:06:05 -0500 Shirish Pargaonkar <shirishpargaonkar@xxxxxxxxx> wrote: > On Thu, Oct 28, 2010 at 6:33 AM, Jeff Layton <jlayton@xxxxxxxxxx> wrote: > > Instead of keeping a tag on the master tlink in the tree, just keep a > > pointer to the master in the superblock. That eliminates the need for > > using the radix tree to look up a tagged entry. > > > > Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx> > > --- > > fs/cifs/cifs_fs_sb.h | 2 +- > > fs/cifs/connect.c | 18 +++--------------- > > 2 files changed, 4 insertions(+), 16 deletions(-) > > > > diff --git a/fs/cifs/cifs_fs_sb.h b/fs/cifs/cifs_fs_sb.h > > index 525ba59..79576da 100644 > > --- a/fs/cifs/cifs_fs_sb.h > > +++ b/fs/cifs/cifs_fs_sb.h > > @@ -43,8 +43,8 @@ > > > > struct cifs_sb_info { > > struct radix_tree_root tlink_tree; > > -#define CIFS_TLINK_MASTER_TAG 0 /* is "master" (mount) tcon */ > > spinlock_t tlink_tree_lock; > > + struct tcon_link *master_tlink; > > struct nls_table *local_nls; > > unsigned int rsize; > > unsigned int wsize; > > diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c > > index 469c3dd..364eb96 100644 > > --- a/fs/cifs/connect.c > > +++ b/fs/cifs/connect.c > > @@ -2917,11 +2917,11 @@ remote_path_check: > > > > spin_lock(&cifs_sb->tlink_tree_lock); > > radix_tree_insert(&cifs_sb->tlink_tree, pSesInfo->linux_uid, tlink); > > - radix_tree_tag_set(&cifs_sb->tlink_tree, pSesInfo->linux_uid, > > - CIFS_TLINK_MASTER_TAG); > > spin_unlock(&cifs_sb->tlink_tree_lock); > > radix_tree_preload_end(); > > > > + cifs_sb->master_tlink = tlink; > > + > > queue_delayed_work(system_nrt_wq, &cifs_sb->prune_tlinks, > > TLINK_IDLE_EXPIRE); > > > > @@ -3275,19 +3275,7 @@ out: > > static struct tcon_link * > > cifs_sb_master_tlink(struct cifs_sb_info *cifs_sb) > > { > > - struct tcon_link *tlink; > > - unsigned int ret; > > - > > - spin_lock(&cifs_sb->tlink_tree_lock); > > - ret = radix_tree_gang_lookup_tag(&cifs_sb->tlink_tree, (void **)&tlink, > > - 0, 1, CIFS_TLINK_MASTER_TAG); > > - spin_unlock(&cifs_sb->tlink_tree_lock); > > - > > - /* the master tcon should always be present */ > > - if (ret == 0) > > - BUG(); > > - > > - return tlink; > > + return cifs_sb->master_tlink; > > Wondering whether we need a function just to return master_tlink > within a cifs_sb. > Could the caller(s) of cifs_sb_master_tlink() access master_tlink directly? > Sure, but accessor functions are generally a good thing. It insulates the callers from needing to know anything about the underlying data structure. -- Jeff Layton <jlayton@xxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-cifs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html