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>
This commit is contained in:
Tejun Heo
2013-11-28 14:54:41 -05:00
committed by Greg Kroah-Hartman
parent ba7443bc65
commit bc755553df
5 changed files with 23 additions and 38 deletions

View File

@@ -11,6 +11,7 @@
#include <linux/err.h>
#include <linux/list.h>
#include <linux/mutex.h>
#include <linux/idr.h>
#include <linux/lockdep.h>
struct file;
@@ -23,6 +24,9 @@ struct sysfs_dirent;
struct kernfs_root {
/* published fields */
struct sysfs_dirent *sd;
/* private fields, do not use outside kernfs proper */
struct ida ino_ida;
};
struct sysfs_open_file {