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 | |
| 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')
| -rw-r--r-- | include/linux/kernfs.h | 17 | ||||
| -rw-r--r-- | include/linux/sysfs.h | 6 |
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; | |||
| 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 | { |
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, | |||
| 219 | void sysfs_delete_link(struct kobject *dir, struct kobject *targ, | 219 | void sysfs_delete_link(struct kobject *dir, struct kobject *targ, |
| 220 | const char *name); | 220 | const char *name); |
| 221 | 221 | ||
| 222 | void sysfs_enable_ns(struct sysfs_dirent *sd); | ||
| 223 | |||
| 224 | int __must_check sysfs_create_group(struct kobject *kobj, | 222 | int __must_check sysfs_create_group(struct kobject *kobj, |
| 225 | const struct attribute_group *grp); | 223 | const struct attribute_group *grp); |
| 226 | int __must_check sysfs_create_groups(struct kobject *kobj, | 224 | 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, | |||
| 354 | { | 352 | { |
| 355 | } | 353 | } |
| 356 | 354 | ||
| 357 | static inline void sysfs_enable_ns(struct sysfs_dirent *sd) | ||
| 358 | { | ||
| 359 | } | ||
| 360 | |||
| 361 | static inline int sysfs_create_group(struct kobject *kobj, | 355 | static inline int sysfs_create_group(struct kobject *kobj, |
| 362 | const struct attribute_group *grp) | 356 | const struct attribute_group *grp) |
| 363 | { | 357 | { |
