aboutsummaryrefslogtreecommitdiffstats
path: root/fs/sysfs/group.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2013-11-28 14:54:15 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-11-29 17:20:13 -0800
commit93b2b8e4aa4317e3fe6414d117deb5f3c362e8bb (patch)
tree0055820ae48856f7ff3bf05c948d0e95d2c73c07 /fs/sysfs/group.c
parentsysfs, kernfs: replace sysfs_dirent->s_dir.kobj and ->s_attr.[bin_]attr with ->priv (diff)
downloadlinux-dev-93b2b8e4aa4317e3fe6414d117deb5f3c362e8bb.tar.xz
linux-dev-93b2b8e4aa4317e3fe6414d117deb5f3c362e8bb.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 'fs/sysfs/group.c')
-rw-r--r--fs/sysfs/group.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/sysfs/group.c b/fs/sysfs/group.c
index 4bd997340830..065689ddb4cb 100644
--- a/fs/sysfs/group.c
+++ b/fs/sysfs/group.c
@@ -101,9 +101,12 @@ static int internal_create_group(struct kobject *kobj, int update,
return -EINVAL;
}
if (grp->name) {
- error = sysfs_create_subdir(kobj, grp->name, &sd);
- if (error)
- return error;
+ sd = kernfs_create_dir(kobj->sd, grp->name, kobj);
+ if (IS_ERR(sd)) {
+ if (PTR_ERR(sd) == -EEXIST)
+ sysfs_warn_dup(kobj->sd, grp->name);
+ return PTR_ERR(sd);
+ }
} else
sd = kobj->sd;
sysfs_get(sd);