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: Tejun 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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
cb26a31157
commit
388975ccca
@@ -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)
|
|||||||
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)
|
|||||||
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;
|
|||||||
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,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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,
|
|||||||
* 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,
|
|||||||
|
|
||||||
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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
{
|
{
|
||||||
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,
|
|||||||
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);
|
|||||||
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,
|
|||||||
|
|
||||||
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,
|
|||||||
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
|
|||||||
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_ */
|
||||||
|
|||||||
Reference in New Issue
Block a user