Commit 388975cc authored by Tejun Heo's avatar Tejun Heo Committed by Greg Kroah-Hartman

sysfs: clean up sysfs_get_dirent()

The pre-existing sysfs interfaces which take explicit namespace
argument are weird in that they place the optional @ns in front of
@name which is contrary to the established convention.  For example,
we end up forcing vast majority of sysfs_get_dirent() users to do
sysfs_get_dirent(parent, NULL, name), which is silly and error-prone
especially as @ns and @name may be interchanged without causing
compilation warning.

This renames sysfs_get_dirent() to sysfs_get_dirent_ns() and swap the
positions of @name and @ns, and sysfs_get_dirent() is now a wrapper
around sysfs_get_dirent_ns().  This makes confusions a lot less
likely.

There are other interfaces which take @ns before @name.  They'll be
updated by following patches.

This patch doesn't introduce any functional changes.

v2: EXPORT_SYMBOL_GPL() wasn't updated leading to undefined symbol
    error on module builds.  Reported by build test robot.  Fixed.
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
Cc: Eric W. Biederman <ebiederm@xmission.com>
Cc: Kay Sievers <kay@vrfy.org>
Cc: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent cb26a311
...@@ -408,7 +408,7 @@ static int gpio_setup_irq(struct gpio_desc *desc, struct device *dev, ...@@ -408,7 +408,7 @@ static int gpio_setup_irq(struct gpio_desc *desc, struct device *dev,
IRQF_TRIGGER_FALLING : IRQF_TRIGGER_RISING; IRQF_TRIGGER_FALLING : IRQF_TRIGGER_RISING;
if (!value_sd) { if (!value_sd) {
value_sd = sysfs_get_dirent(dev->kobj.sd, NULL, "value"); value_sd = sysfs_get_dirent(dev->kobj.sd, "value");
if (!value_sd) { if (!value_sd) {
ret = -ENODEV; ret = -ENODEV;
goto err_out; goto err_out;
......
...@@ -1654,9 +1654,9 @@ int bitmap_create(struct mddev *mddev) ...@@ -1654,9 +1654,9 @@ int bitmap_create(struct mddev *mddev)
bitmap->mddev = mddev; bitmap->mddev = mddev;
if (mddev->kobj.sd) if (mddev->kobj.sd)
bm = sysfs_get_dirent(mddev->kobj.sd, NULL, "bitmap"); bm = sysfs_get_dirent(mddev->kobj.sd, "bitmap");
if (bm) { if (bm) {
bitmap->sysfs_can_clear = sysfs_get_dirent(bm, NULL, "can_clear"); bitmap->sysfs_can_clear = sysfs_get_dirent(bm, "can_clear");
sysfs_put(bm); sysfs_put(bm);
} else } else
bitmap->sysfs_can_clear = NULL; bitmap->sysfs_can_clear = NULL;
......
...@@ -3555,7 +3555,7 @@ level_store(struct mddev *mddev, const char *buf, size_t len) ...@@ -3555,7 +3555,7 @@ level_store(struct mddev *mddev, const char *buf, size_t len)
printk(KERN_WARNING printk(KERN_WARNING
"md: cannot register extra attributes for %s\n", "md: cannot register extra attributes for %s\n",
mdname(mddev)); mdname(mddev));
mddev->sysfs_action = sysfs_get_dirent(mddev->kobj.sd, NULL, "sync_action"); mddev->sysfs_action = sysfs_get_dirent(mddev->kobj.sd, "sync_action");
} }
if (mddev->pers->sync_request != NULL && if (mddev->pers->sync_request != NULL &&
pers->sync_request == NULL) { pers->sync_request == NULL) {
......
...@@ -501,7 +501,7 @@ extern struct attribute_group md_bitmap_group; ...@@ -501,7 +501,7 @@ extern struct attribute_group md_bitmap_group;
static inline struct sysfs_dirent *sysfs_get_dirent_safe(struct sysfs_dirent *sd, char *name) static inline struct sysfs_dirent *sysfs_get_dirent_safe(struct sysfs_dirent *sd, char *name)
{ {
if (sd) if (sd)
return sysfs_get_dirent(sd, NULL, name); return sysfs_get_dirent(sd, name);
return sd; return sd;
} }
static inline void sysfs_notify_dirent_safe(struct sysfs_dirent *sd) static inline void sysfs_notify_dirent_safe(struct sysfs_dirent *sd)
......
...@@ -630,9 +630,10 @@ struct sysfs_dirent *sysfs_find_dirent(struct sysfs_dirent *parent_sd, ...@@ -630,9 +630,10 @@ struct sysfs_dirent *sysfs_find_dirent(struct sysfs_dirent *parent_sd,
} }
/** /**
* sysfs_get_dirent - find and get sysfs_dirent with the given name * sysfs_get_dirent_ns - find and get sysfs_dirent with the given name
* @parent_sd: sysfs_dirent to search under * @parent_sd: sysfs_dirent to search under
* @name: name to look for * @name: name to look for
* @ns: the namespace tag to use
* *
* Look for sysfs_dirent with name @name under @parent_sd and get * Look for sysfs_dirent with name @name under @parent_sd and get
* it if found. * it if found.
...@@ -643,9 +644,9 @@ struct sysfs_dirent *sysfs_find_dirent(struct sysfs_dirent *parent_sd, ...@@ -643,9 +644,9 @@ struct sysfs_dirent *sysfs_find_dirent(struct sysfs_dirent *parent_sd,
* RETURNS: * RETURNS:
* Pointer to sysfs_dirent if found, NULL if not. * Pointer to sysfs_dirent if found, NULL if not.
*/ */
struct sysfs_dirent *sysfs_get_dirent(struct sysfs_dirent *parent_sd, struct sysfs_dirent *sysfs_get_dirent_ns(struct sysfs_dirent *parent_sd,
const void *ns, const unsigned char *name,
const unsigned char *name) const void *ns)
{ {
struct sysfs_dirent *sd; struct sysfs_dirent *sd;
...@@ -656,7 +657,7 @@ struct sysfs_dirent *sysfs_get_dirent(struct sysfs_dirent *parent_sd, ...@@ -656,7 +657,7 @@ struct sysfs_dirent *sysfs_get_dirent(struct sysfs_dirent *parent_sd,
return sd; return sd;
} }
EXPORT_SYMBOL_GPL(sysfs_get_dirent); EXPORT_SYMBOL_GPL(sysfs_get_dirent_ns);
static int create_dir(struct kobject *kobj, struct sysfs_dirent *parent_sd, static int create_dir(struct kobject *kobj, struct sysfs_dirent *parent_sd,
const void *ns, const char *name, struct sysfs_dirent **p_sd) const void *ns, const char *name, struct sysfs_dirent **p_sd)
......
...@@ -563,7 +563,7 @@ int sysfs_add_file_to_group(struct kobject *kobj, ...@@ -563,7 +563,7 @@ int sysfs_add_file_to_group(struct kobject *kobj,
int error; int error;
if (group) if (group)
dir_sd = sysfs_get_dirent(kobj->sd, NULL, group); dir_sd = sysfs_get_dirent(kobj->sd, group);
else else
dir_sd = sysfs_get(kobj->sd); dir_sd = sysfs_get(kobj->sd);
...@@ -645,7 +645,7 @@ void sysfs_remove_file_from_group(struct kobject *kobj, ...@@ -645,7 +645,7 @@ void sysfs_remove_file_from_group(struct kobject *kobj,
struct sysfs_dirent *dir_sd; struct sysfs_dirent *dir_sd;
if (group) if (group)
dir_sd = sysfs_get_dirent(kobj->sd, NULL, group); dir_sd = sysfs_get_dirent(kobj->sd, group);
else else
dir_sd = sysfs_get(kobj->sd); dir_sd = sysfs_get(kobj->sd);
if (dir_sd) { if (dir_sd) {
......
...@@ -207,7 +207,7 @@ void sysfs_remove_group(struct kobject *kobj, ...@@ -207,7 +207,7 @@ void sysfs_remove_group(struct kobject *kobj,
struct sysfs_dirent *sd; struct sysfs_dirent *sd;
if (grp->name) { if (grp->name) {
sd = sysfs_get_dirent(dir_sd, NULL, grp->name); sd = sysfs_get_dirent(dir_sd, grp->name);
if (!sd) { if (!sd) {
WARN(!sd, KERN_WARNING WARN(!sd, KERN_WARNING
"sysfs group %p not found for kobject '%s'\n", "sysfs group %p not found for kobject '%s'\n",
...@@ -262,7 +262,7 @@ int sysfs_merge_group(struct kobject *kobj, ...@@ -262,7 +262,7 @@ int sysfs_merge_group(struct kobject *kobj,
struct attribute *const *attr; struct attribute *const *attr;
int i; int i;
dir_sd = sysfs_get_dirent(kobj->sd, NULL, grp->name); dir_sd = sysfs_get_dirent(kobj->sd, grp->name);
if (!dir_sd) if (!dir_sd)
return -ENOENT; return -ENOENT;
...@@ -289,7 +289,7 @@ void sysfs_unmerge_group(struct kobject *kobj, ...@@ -289,7 +289,7 @@ void sysfs_unmerge_group(struct kobject *kobj,
struct sysfs_dirent *dir_sd; struct sysfs_dirent *dir_sd;
struct attribute *const *attr; struct attribute *const *attr;
dir_sd = sysfs_get_dirent(kobj->sd, NULL, grp->name); dir_sd = sysfs_get_dirent(kobj->sd, grp->name);
if (dir_sd) { if (dir_sd) {
for (attr = grp->attrs; *attr; ++attr) for (attr = grp->attrs; *attr; ++attr)
sysfs_hash_and_remove(dir_sd, NULL, (*attr)->name); sysfs_hash_and_remove(dir_sd, NULL, (*attr)->name);
...@@ -311,7 +311,7 @@ int sysfs_add_link_to_group(struct kobject *kobj, const char *group_name, ...@@ -311,7 +311,7 @@ int sysfs_add_link_to_group(struct kobject *kobj, const char *group_name,
struct sysfs_dirent *dir_sd; struct sysfs_dirent *dir_sd;
int error = 0; int error = 0;
dir_sd = sysfs_get_dirent(kobj->sd, NULL, group_name); dir_sd = sysfs_get_dirent(kobj->sd, group_name);
if (!dir_sd) if (!dir_sd)
return -ENOENT; return -ENOENT;
...@@ -333,7 +333,7 @@ void sysfs_remove_link_from_group(struct kobject *kobj, const char *group_name, ...@@ -333,7 +333,7 @@ void sysfs_remove_link_from_group(struct kobject *kobj, const char *group_name,
{ {
struct sysfs_dirent *dir_sd; struct sysfs_dirent *dir_sd;
dir_sd = sysfs_get_dirent(kobj->sd, NULL, group_name); dir_sd = sysfs_get_dirent(kobj->sd, group_name);
if (dir_sd) { if (dir_sd) {
sysfs_hash_and_remove(dir_sd, NULL, link_name); sysfs_hash_and_remove(dir_sd, NULL, link_name);
sysfs_put(dir_sd); sysfs_put(dir_sd);
......
...@@ -191,7 +191,7 @@ int sysfs_rename_link_ns(struct kobject *kobj, struct kobject *targ, ...@@ -191,7 +191,7 @@ int sysfs_rename_link_ns(struct kobject *kobj, struct kobject *targ,
old_ns = targ->sd->s_ns; old_ns = targ->sd->s_ns;
result = -ENOENT; result = -ENOENT;
sd = sysfs_get_dirent(parent_sd, old_ns, old); sd = sysfs_get_dirent_ns(parent_sd, old, old_ns);
if (!sd) if (!sd)
goto out; goto out;
......
...@@ -164,9 +164,6 @@ void sysfs_addrm_finish(struct sysfs_addrm_cxt *acxt); ...@@ -164,9 +164,6 @@ void sysfs_addrm_finish(struct sysfs_addrm_cxt *acxt);
struct sysfs_dirent *sysfs_find_dirent(struct sysfs_dirent *parent_sd, struct sysfs_dirent *sysfs_find_dirent(struct sysfs_dirent *parent_sd,
const void *ns, const void *ns,
const unsigned char *name); const unsigned char *name);
struct sysfs_dirent *sysfs_get_dirent(struct sysfs_dirent *parent_sd,
const void *ns,
const unsigned char *name);
struct sysfs_dirent *sysfs_new_dirent(const char *name, umode_t mode, int type); struct sysfs_dirent *sysfs_new_dirent(const char *name, umode_t mode, int type);
void release_sysfs_dirent(struct sysfs_dirent *sd); void release_sysfs_dirent(struct sysfs_dirent *sd);
......
...@@ -245,9 +245,9 @@ void sysfs_remove_link_from_group(struct kobject *kobj, const char *group_name, ...@@ -245,9 +245,9 @@ void sysfs_remove_link_from_group(struct kobject *kobj, const char *group_name,
void sysfs_notify(struct kobject *kobj, const char *dir, const char *attr); void sysfs_notify(struct kobject *kobj, const char *dir, const char *attr);
void sysfs_notify_dirent(struct sysfs_dirent *sd); void sysfs_notify_dirent(struct sysfs_dirent *sd);
struct sysfs_dirent *sysfs_get_dirent(struct sysfs_dirent *parent_sd, struct sysfs_dirent *sysfs_get_dirent_ns(struct sysfs_dirent *parent_sd,
const void *ns, const unsigned char *name,
const unsigned char *name); const void *ns);
struct sysfs_dirent *sysfs_get(struct sysfs_dirent *sd); struct sysfs_dirent *sysfs_get(struct sysfs_dirent *sd);
void sysfs_put(struct sysfs_dirent *sd); void sysfs_put(struct sysfs_dirent *sd);
...@@ -422,10 +422,9 @@ static inline void sysfs_notify(struct kobject *kobj, const char *dir, ...@@ -422,10 +422,9 @@ static inline void sysfs_notify(struct kobject *kobj, const char *dir,
static inline void sysfs_notify_dirent(struct sysfs_dirent *sd) static inline void sysfs_notify_dirent(struct sysfs_dirent *sd)
{ {
} }
static inline static inline struct sysfs_dirent *
struct sysfs_dirent *sysfs_get_dirent(struct sysfs_dirent *parent_sd, sysfs_get_dirent_ns(struct sysfs_dirent *parent_sd, const unsigned char *name,
const void *ns, const void *ns)
const unsigned char *name)
{ {
return NULL; return NULL;
} }
...@@ -462,4 +461,10 @@ static inline int sysfs_rename_link(struct kobject *kobj, struct kobject *target ...@@ -462,4 +461,10 @@ static inline int sysfs_rename_link(struct kobject *kobj, struct kobject *target
return sysfs_rename_link_ns(kobj, target, old_name, new_name, NULL); return sysfs_rename_link_ns(kobj, target, old_name, new_name, NULL);
} }
static inline struct sysfs_dirent *
sysfs_get_dirent(struct sysfs_dirent *parent_sd, const unsigned char *name)
{
return sysfs_get_dirent_ns(parent_sd, name, NULL);
}
#endif /* _SYSFS_H_ */ #endif /* _SYSFS_H_ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment