path: New helpers path_get_pin/path_put_unpin for path pin
Subsystems (3)
PATCH v3 3/5 path: New helpers path_get_pin/path_put_unpin for path pin
Two new helpers for filesystem pining to vfsmnt, not mntget.
v3: new patch as v1.
Signed-off-by Kinglong Mee <[email protected]>
--- fs/namei.c | 26 ++++++++++++++++++++++++++ include/linux/path.h | 4 ++++ 2 files changed, 30 insertions(+)
fs/namei.c +26 -0
@@ -492,6 +492,32 @@ void path_put(const struct path *path) }EXPORT_SYMBOL (path_put); +/** +* path_get_pin - get a reference to a path's dentry +* and pin to path's vfsmnt +* @path: path to get the reference to +* @p: the fs_pin pin to vfsmnt +*/ +void path_get_pin (struct path *path,struct fs_pin *p) +{ +dget (path->dentry); +pin_insert_group (p, path->mnt,NULL ); +} +EXPORT_SYMBOL (path_get_pin); + +/** +* path_put_unpin - put a reference to a path's dentry +* and remove pin to path's vfsmnt +* @path: path to put the reference to +* @p: the fs_pin removed from vfsmnt +*/ +void path_put_unpin (struct path *path,struct fs_pin *p) +{ +dput (path->dentry); +pin_remove (p); +} +EXPORT_SYMBOL (path_put_unpin); +struct nameidata {struct path path;struct qstr last;
include/linux/path.h +4 -0
@@ -3,6 +3,7 @@struct dentry ;struct vfsmount ; +struct fs_pin ;struct path {struct vfsmount *mnt;
@@ -12,6 +13,9 @@ struct path {extern void path_get (const struct path *);extern void path_put (const struct path *); +extern void path_get_pin (struct path *,struct fs_pin *); +extern void path_put_unpin (struct path *,struct fs_pin *); +static inline int path_equal (const struct path *path1,const struct path *path2) {return path1->mnt == path2->mnt && path1->dentry == path2->dentry;
Signature · 6 lines
2.4.2 -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html