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:
Eric W. Biederman
2007-07-31 19:15:08 +09:00
committed by Greg Kroah-Hartman
parent 869512ab5a
commit 90bc61359d
8 changed files with 33 additions and 229 deletions
+6 -38
View File
@@ -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.