9p: don't bother with private lock in ->d_fsdata; dentry->d_lock will do just fine

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Al Viro 2013-02-27 22:37:21 -05:00
parent 6131ffaa1f
commit 634095dab2
2 changed files with 6 additions and 7 deletions

View File

@ -54,14 +54,13 @@ int v9fs_fid_add(struct dentry *dentry, struct p9_fid *fid)
if (!dent) if (!dent)
return -ENOMEM; return -ENOMEM;
spin_lock_init(&dent->lock);
INIT_LIST_HEAD(&dent->fidlist); INIT_LIST_HEAD(&dent->fidlist);
dentry->d_fsdata = dent; dentry->d_fsdata = dent;
} }
spin_lock(&dent->lock); spin_lock(&dentry->d_lock);
list_add(&fid->dlist, &dent->fidlist); list_add(&fid->dlist, &dent->fidlist);
spin_unlock(&dent->lock); spin_unlock(&dentry->d_lock);
return 0; return 0;
} }
@ -85,14 +84,14 @@ static struct p9_fid *v9fs_fid_find(struct dentry *dentry, kuid_t uid, int any)
dent = (struct v9fs_dentry *) dentry->d_fsdata; dent = (struct v9fs_dentry *) dentry->d_fsdata;
ret = NULL; ret = NULL;
if (dent) { if (dent) {
spin_lock(&dent->lock); spin_lock(&dentry->d_lock);
list_for_each_entry(fid, &dent->fidlist, dlist) { list_for_each_entry(fid, &dent->fidlist, dlist) {
if (any || uid_eq(fid->uid, uid)) { if (any || uid_eq(fid->uid, uid)) {
ret = fid; ret = fid;
break; break;
} }
} }
spin_unlock(&dent->lock); spin_unlock(&dentry->d_lock);
} }
return ret; return ret;

View File

@ -25,7 +25,6 @@
/** /**
* struct v9fs_dentry - 9p private data stored in dentry d_fsdata * struct v9fs_dentry - 9p private data stored in dentry d_fsdata
* @lock: protects the fidlist
* @fidlist: list of FIDs currently associated with this dentry * @fidlist: list of FIDs currently associated with this dentry
* *
* This structure defines the 9p private data associated with * This structure defines the 9p private data associated with
@ -35,11 +34,12 @@
* inodes in order to more closely map functionality to the Plan 9 * inodes in order to more closely map functionality to the Plan 9
* expected behavior for FID reclaimation and tracking. * expected behavior for FID reclaimation and tracking.
* *
* Protected by ->d_lock of dentry it belongs to.
*
* See Also: Mapping FIDs to Linux VFS model in * See Also: Mapping FIDs to Linux VFS model in
* Design and Implementation of the Linux 9P File System documentation * Design and Implementation of the Linux 9P File System documentation
*/ */
struct v9fs_dentry { struct v9fs_dentry {
spinlock_t lock; /* protect fidlist */
struct list_head fidlist; struct list_head fidlist;
}; };