diff options
author | Tejun Heo <tj@kernel.org> | 2013-11-28 14:54:15 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-11-29 20:20:13 -0500 |
commit | 93b2b8e4aa4317e3fe6414d117deb5f3c362e8bb (patch) | |
tree | 0055820ae48856f7ff3bf05c948d0e95d2c73c07 /include/linux/kernfs.h | |
parent | 7c6e2d362c19f01e6d6c8be59d83a89722032884 (diff) |
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.h | 17 |
1 files changed, 17 insertions, 0 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; | |||
17 | 17 | ||
18 | #ifdef CONFIG_SYSFS | 18 | #ifdef CONFIG_SYSFS |
19 | 19 | ||
20 | struct sysfs_dirent *kernfs_create_dir_ns(struct sysfs_dirent *parent, | ||
21 | const char *name, void *priv, | ||
22 | const void *ns); | ||
20 | struct sysfs_dirent *kernfs_create_link(struct sysfs_dirent *parent, | 23 | struct sysfs_dirent *kernfs_create_link(struct sysfs_dirent *parent, |
21 | const char *name, | 24 | const char *name, |
22 | struct sysfs_dirent *target); | 25 | struct sysfs_dirent *target); |
@@ -25,11 +28,17 @@ int kernfs_remove_by_name_ns(struct sysfs_dirent *parent, const char *name, | |||
25 | const void *ns); | 28 | const void *ns); |
26 | int kernfs_rename_ns(struct sysfs_dirent *sd, struct sysfs_dirent *new_parent, | 29 | int kernfs_rename_ns(struct sysfs_dirent *sd, struct sysfs_dirent *new_parent, |
27 | const char *new_name, const void *new_ns); | 30 | const char *new_name, const void *new_ns); |
31 | void kernfs_enable_ns(struct sysfs_dirent *sd); | ||
28 | int kernfs_setattr(struct sysfs_dirent *sd, const struct iattr *iattr); | 32 | int kernfs_setattr(struct sysfs_dirent *sd, const struct iattr *iattr); |
29 | 33 | ||
30 | #else /* CONFIG_SYSFS */ | 34 | #else /* CONFIG_SYSFS */ |
31 | 35 | ||
32 | static inline struct sysfs_dirent * | 36 | static inline struct sysfs_dirent * |
37 | kernfs_create_dir_ns(struct sysfs_dirent *parent, const char *name, void *priv, | ||
38 | const void *ns) | ||
39 | { return ERR_PTR(-ENOSYS); } | ||
40 | |||
41 | static inline struct sysfs_dirent * | ||
33 | kernfs_create_link(struct sysfs_dirent *parent, const char *name, | 42 | kernfs_create_link(struct sysfs_dirent *parent, const char *name, |
34 | struct sysfs_dirent *target) | 43 | struct sysfs_dirent *target) |
35 | { return ERR_PTR(-ENOSYS); } | 44 | { return ERR_PTR(-ENOSYS); } |
@@ -45,12 +54,20 @@ static inline int kernfs_rename_ns(struct sysfs_dirent *sd, | |||
45 | const char *new_name, const void *new_ns) | 54 | const char *new_name, const void *new_ns) |
46 | { return -ENOSYS; } | 55 | { return -ENOSYS; } |
47 | 56 | ||
57 | static inline void kernfs_enable_ns(struct sysfs_dirent *sd) { } | ||
58 | |||
48 | static inline int kernfs_setattr(struct sysfs_dirent *sd, | 59 | static inline int kernfs_setattr(struct sysfs_dirent *sd, |
49 | const struct iattr *iattr) | 60 | const struct iattr *iattr) |
50 | { return -ENOSYS; } | 61 | { return -ENOSYS; } |
51 | 62 | ||
52 | #endif /* CONFIG_SYSFS */ | 63 | #endif /* CONFIG_SYSFS */ |
53 | 64 | ||
65 | static inline struct sysfs_dirent * | ||
66 | kernfs_create_dir(struct sysfs_dirent *parent, const char *name, void *priv) | ||
67 | { | ||
68 | return kernfs_create_dir_ns(parent, name, priv, NULL); | ||
69 | } | ||
70 | |||
54 | static inline int kernfs_remove_by_name(struct sysfs_dirent *parent, | 71 | static inline int kernfs_remove_by_name(struct sysfs_dirent *parent, |
55 | const char *name) | 72 | const char *name) |
56 | { | 73 | { |