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:
parent
6131ffaa1f
commit
634095dab2
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue