summaryrefslogtreecommitdiff
path: root/include/linux/kernfs.h
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2013-11-28 14:54:15 -0500
committerPawel Osmialowski <p.osmialowsk@mcdsrvbld02.digital.local>2015-03-27 14:37:26 +0100
commit6abda5bf463989b943f6b7ab8ba9ec0cb1c1cb5b (patch)
tree138747b05dd843121c9de910fbd5fa3c52282e31 /include/linux/kernfs.h
parent6376840e383dc999f16579dd57abfa612b24e7a7 (diff)
downloadlinux-3.10-6abda5bf463989b943f6b7ab8ba9ec0cb1c1cb5b.tar.gz
linux-3.10-6abda5bf463989b943f6b7ab8ba9ec0cb1c1cb5b.tar.bz2
linux-3.10-6abda5bf463989b943f6b7ab8ba9ec0cb1c1cb5b.zip
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/linux/kernfs.h')
-rw-r--r--include/linux/kernfs.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/include/linux/kernfs.h b/include/linux/kernfs.h
index 8cb67387571..e8b73d4a08d 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)
{