sysfs, kernfs: make inode number ida per kernfs_root
kernfs is being updated to allow multiple sysfs_dirent hierarchies so
that it can also be used by other users. Currently, inode number is
allocated using a global ida, sysfs_ino_ida; however, inos for
different hierarchies should be handled separately.
This patch makes ino allocation per kernfs_root. sysfs_ino_ida is
replaced by kernfs_root->ino_ida and sysfs_new_dirent() is updated to
take @root and allocate ino from it. ida_simple_get/remove() are used
instead of sysfs_ino_lock and sysfs_alloc/free_ino().
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
diff --git a/fs/kernfs/file.c b/fs/kernfs/file.c
index fa172e8..990c97f 100644
--- a/fs/kernfs/file.c
+++ b/fs/kernfs/file.c
@@ -775,8 +775,8 @@
struct sysfs_dirent *sd;
int rc;
- sd = sysfs_new_dirent(name, (mode & S_IALLUGO) | S_IFREG,
- SYSFS_KOBJ_ATTR);
+ sd = sysfs_new_dirent(kernfs_root(parent), name,
+ (mode & S_IALLUGO) | S_IFREG, SYSFS_KOBJ_ATTR);
if (!sd)
return ERR_PTR(-ENOMEM);