You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
sysfs: Remove first pass at shadow directory support
While shadow directories appear to be a good idea, the current scheme
of controlling their creation and destruction outside of sysfs appears
to be a locking and maintenance nightmare in the face of sysfs
directories dynamically coming and going. Which can now occur for
directories containing network devices when CONFIG_SYSFS_DEPRECATED is
not set.
This patch removes everything from the initial shadow directory support
that allowed the shadow directory creation to be controlled at a higher
level. So except for a few bits of sysfs_rename_dir everything from
commit b592fcfe7f is now gone.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
869512ab5a
commit
90bc61359d
+6
-38
@@ -44,11 +44,11 @@ static int populate_dir(struct kobject * kobj)
|
||||
return error;
|
||||
}
|
||||
|
||||
static int create_dir(struct kobject *kobj, struct sysfs_dirent *shadow_parent)
|
||||
static int create_dir(struct kobject * kobj)
|
||||
{
|
||||
int error = 0;
|
||||
if (kobject_name(kobj)) {
|
||||
error = sysfs_create_dir(kobj, shadow_parent);
|
||||
error = sysfs_create_dir(kobj);
|
||||
if (!error) {
|
||||
if ((error = populate_dir(kobj)))
|
||||
sysfs_remove_dir(kobj);
|
||||
@@ -157,12 +157,11 @@ static void unlink(struct kobject * kobj)
|
||||
}
|
||||
|
||||
/**
|
||||
* kobject_shadow_add - add an object to the hierarchy.
|
||||
* kobject_add - add an object to the hierarchy.
|
||||
* @kobj: object.
|
||||
* @shadow_parent: sysfs directory to add to.
|
||||
*/
|
||||
|
||||
int kobject_shadow_add(struct kobject *kobj, struct sysfs_dirent *shadow_parent)
|
||||
int kobject_add(struct kobject * kobj)
|
||||
{
|
||||
int error = 0;
|
||||
struct kobject * parent;
|
||||
@@ -194,7 +193,7 @@ int kobject_shadow_add(struct kobject *kobj, struct sysfs_dirent *shadow_parent)
|
||||
kobj->parent = parent;
|
||||
}
|
||||
|
||||
error = create_dir(kobj, shadow_parent);
|
||||
error = create_dir(kobj);
|
||||
if (error) {
|
||||
/* unlink does the kobject_put() for us */
|
||||
unlink(kobj);
|
||||
@@ -215,16 +214,6 @@ int kobject_shadow_add(struct kobject *kobj, struct sysfs_dirent *shadow_parent)
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
* kobject_add - add an object to the hierarchy.
|
||||
* @kobj: object.
|
||||
*/
|
||||
int kobject_add(struct kobject * kobj)
|
||||
{
|
||||
return kobject_shadow_add(kobj, NULL);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* kobject_register - initialize and add an object.
|
||||
* @kobj: object in question.
|
||||
@@ -334,7 +323,7 @@ int kobject_rename(struct kobject * kobj, const char *new_name)
|
||||
/* Note : if we want to send the new name alone, not the full path,
|
||||
* we could probably use kobject_name(kobj); */
|
||||
|
||||
error = sysfs_rename_dir(kobj, kobj->parent->sd, new_name);
|
||||
error = sysfs_rename_dir(kobj, new_name);
|
||||
|
||||
/* This function is mostly/only used for network interface.
|
||||
* Some hotplug package track interfaces by their name and
|
||||
@@ -350,27 +339,6 @@ out:
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
* kobject_rename - change the name of an object
|
||||
* @kobj: object in question.
|
||||
* @new_parent: object's new parent
|
||||
* @new_name: object's new name
|
||||
*/
|
||||
|
||||
int kobject_shadow_rename(struct kobject *kobj,
|
||||
struct sysfs_dirent *new_parent, const char *new_name)
|
||||
{
|
||||
int error = 0;
|
||||
|
||||
kobj = kobject_get(kobj);
|
||||
if (!kobj)
|
||||
return -EINVAL;
|
||||
error = sysfs_rename_dir(kobj, new_parent, new_name);
|
||||
kobject_put(kobj);
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
* kobject_move - move object to another parent
|
||||
* @kobj: object in question.
|
||||
|
||||
Reference in New Issue
Block a user