summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2013-11-28 23:54:15 +0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-11-30 05:20:13 +0400
commit93b2b8e4aa4317e3fe6414d117deb5f3c362e8bb (patch)
tree0055820ae48856f7ff3bf05c948d0e95d2c73c07 /include
parent7c6e2d362c19f01e6d6c8be59d83a89722032884 (diff)
downloadlinux-93b2b8e4aa4317e3fe6414d117deb5f3c362e8bb.tar.xz
sysfs, kernfs: introduce kernfs_create_dir[_ns]()
Introduce kernfs interface to manipulate a directory which takes and returns sysfs_dirents. create_dir() is renamed to kernfs_create_dir_ns() and its argumantes and return value are updated. create_dir() usages are replaced with kernfs_create_dir_ns() and sysfs_create_subdir() usages are replaced with kernfs_create_dir(). Dup warnings are handled explicitly by sysfs users of the kernfs interface. sysfs_enable_ns() is renamed to kernfs_enable_ns(). This patch doesn't introduce any behavior changes. v2: Dummy implementation for !CONFIG_SYSFS updated to return -ENOSYS. v3: kernfs_enable_ns() added. v4: Refreshed on top of "sysfs: drop kobj_ns_type handling, take #2" so that this patch removes sysfs_enable_ns(). Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include')
-rw-r--r--include/linux/kernfs.h17
-rw-r--r--include/linux/sysfs.h6
2 files changed, 17 insertions, 6 deletions
diff --git a/include/linux/kernfs.h b/include/linux/kernfs.h
index 8cb673875715..e8b73d4a08d2 100644
--- a/include/linux/kernfs.h
+++ b/include/linux/kernfs.h
@@ -17,6 +17,9 @@ struct sysfs_dirent;
#ifdef CONFIG_SYSFS
+struct sysfs_dirent *kernfs_create_dir_ns(struct sysfs_dirent *parent,
+ const char *name, void *priv,
+ const void *ns);
struct sysfs_dirent *kernfs_create_link(struct sysfs_dirent *parent,
const char *name,
struct sysfs_dirent *target);
@@ -25,11 +28,17 @@ int kernfs_remove_by_name_ns(struct sysfs_dirent *parent, const char *name,
const void *ns);
int kernfs_rename_ns(struct sysfs_dirent *sd, struct sysfs_dirent *new_parent,
const char *new_name, const void *new_ns);
+void kernfs_enable_ns(struct sysfs_dirent *sd);
int kernfs_setattr(struct sysfs_dirent *sd, const struct iattr *iattr);
#else /* CONFIG_SYSFS */
static inline struct sysfs_dirent *
+kernfs_create_dir_ns(struct sysfs_dirent *parent, const char *name, void *priv,
+ const void *ns)
+{ return ERR_PTR(-ENOSYS); }
+
+static inline struct sysfs_dirent *
kernfs_create_link(struct sysfs_dirent *parent, const char *name,
struct sysfs_dirent *target)
{ return ERR_PTR(-ENOSYS); }
@@ -45,12 +54,20 @@ static inline int kernfs_rename_ns(struct sysfs_dirent *sd,
const char *new_name, const void *new_ns)
{ return -ENOSYS; }
+static inline void kernfs_enable_ns(struct sysfs_dirent *sd) { }
+
static inline int kernfs_setattr(struct sysfs_dirent *sd,
const struct iattr *iattr)
{ return -ENOSYS; }
#endif /* CONFIG_SYSFS */
+static inline struct sysfs_dirent *
+kernfs_create_dir(struct sysfs_dirent *parent, const char *name, void *priv)
+{
+ return kernfs_create_dir_ns(parent, name, priv, NULL);
+}
+
static inline int kernfs_remove_by_name(struct sysfs_dirent *parent,
const char *name)
{
diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h
index e17381a92e1a..2bc735d3e938 100644
--- a/include/linux/sysfs.h
+++ b/include/linux/sysfs.h
@@ -219,8 +219,6 @@ int sysfs_rename_link_ns(struct kobject *kobj, struct kobject *target,
void sysfs_delete_link(struct kobject *dir, struct kobject *targ,
const char *name);
-void sysfs_enable_ns(struct sysfs_dirent *sd);
-
int __must_check sysfs_create_group(struct kobject *kobj,
const struct attribute_group *grp);
int __must_check sysfs_create_groups(struct kobject *kobj,
@@ -354,10 +352,6 @@ static inline void sysfs_delete_link(struct kobject *k, struct kobject *t,
{
}
-static inline void sysfs_enable_ns(struct sysfs_dirent *sd)
-{
-}
-
static inline int sysfs_create_group(struct kobject *kobj,
const struct attribute_group *grp)
{