diff options
author | Cornelia Huck <cornelia.huck@de.ibm.com> | 2008-06-10 05:09:08 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-07-22 00:55:01 -0400 |
commit | 36ce6dad6e3cb3f050ed41e0beac0070d2062b25 (patch) | |
tree | 91c89c903b06dc8b76e66e7b2341bcd6085e81d0 /fs/sysfs/symlink.c | |
parent | 0ad1d6f37cc3bb234c6e7ae30e40d1d40b9aa258 (diff) |
driver core: Suppress sysfs warnings for device_rename().
driver core: Suppress sysfs warnings for device_rename().
Renaming network devices to an already existing name is not
something we want sysfs to print a scary warning for, since the
callers can deal with this correctly. So let's introduce
sysfs_create_link_nowarn() which gets rid of the common warning.
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'fs/sysfs/symlink.c')
-rw-r--r-- | fs/sysfs/symlink.c | 41 |
1 files changed, 33 insertions, 8 deletions
diff --git a/fs/sysfs/symlink.c b/fs/sysfs/symlink.c index 817f5966edca..a3ba217fbe74 100644 --- a/fs/sysfs/symlink.c +++ b/fs/sysfs/symlink.c | |||
@@ -19,13 +19,8 @@ | |||
19 | 19 | ||
20 | #include "sysfs.h" | 20 | #include "sysfs.h" |
21 | 21 | ||
22 | /** | 22 | static int sysfs_do_create_link(struct kobject *kobj, struct kobject *target, |
23 | * sysfs_create_link - create symlink between two objects. | 23 | const char *name, int warn) |
24 | * @kobj: object whose directory we're creating the link in. | ||
25 | * @target: object we're pointing to. | ||
26 | * @name: name of the symlink. | ||
27 | */ | ||
28 | int sysfs_create_link(struct kobject * kobj, struct kobject * target, const char * name) | ||
29 | { | 24 | { |
30 | struct sysfs_dirent *parent_sd = NULL; | 25 | struct sysfs_dirent *parent_sd = NULL; |
31 | struct sysfs_dirent *target_sd = NULL; | 26 | struct sysfs_dirent *target_sd = NULL; |
@@ -65,7 +60,10 @@ int sysfs_create_link(struct kobject * kobj, struct kobject * target, const char | |||
65 | target_sd = NULL; /* reference is now owned by the symlink */ | 60 | target_sd = NULL; /* reference is now owned by the symlink */ |
66 | 61 | ||
67 | sysfs_addrm_start(&acxt, parent_sd); | 62 | sysfs_addrm_start(&acxt, parent_sd); |
68 | error = sysfs_add_one(&acxt, sd); | 63 | if (warn) |
64 | error = sysfs_add_one(&acxt, sd); | ||
65 | else | ||
66 | error = __sysfs_add_one(&acxt, sd); | ||
69 | sysfs_addrm_finish(&acxt); | 67 | sysfs_addrm_finish(&acxt); |
70 | 68 | ||
71 | if (error) | 69 | if (error) |
@@ -80,6 +78,33 @@ int sysfs_create_link(struct kobject * kobj, struct kobject * target, const char | |||
80 | } | 78 | } |
81 | 79 | ||
82 | /** | 80 | /** |
81 | * sysfs_create_link - create symlink between two objects. | ||
82 | * @kobj: object whose directory we're creating the link in. | ||
83 | * @target: object we're pointing to. | ||
84 | * @name: name of the symlink. | ||
85 | */ | ||
86 | int sysfs_create_link(struct kobject *kobj, struct kobject *target, | ||
87 | const char *name) | ||
88 | { | ||
89 | return sysfs_do_create_link(kobj, target, name, 1); | ||
90 | } | ||
91 | |||
92 | /** | ||
93 | * sysfs_create_link_nowarn - create symlink between two objects. | ||
94 | * @kobj: object whose directory we're creating the link in. | ||
95 | * @target: object we're pointing to. | ||
96 | * @name: name of the symlink. | ||
97 | * | ||
98 | * This function does the same as sysf_create_link(), but it | ||
99 | * doesn't warn if the link already exists. | ||
100 | */ | ||
101 | int sysfs_create_link_nowarn(struct kobject *kobj, struct kobject *target, | ||
102 | const char *name) | ||
103 | { | ||
104 | return sysfs_do_create_link(kobj, target, name, 0); | ||
105 | } | ||
106 | |||
107 | /** | ||
83 | * sysfs_remove_link - remove symlink in object's directory. | 108 | * sysfs_remove_link - remove symlink in object's directory. |
84 | * @kobj: object we're acting for. | 109 | * @kobj: object we're acting for. |
85 | * @name: name of the symlink to remove. | 110 | * @name: name of the symlink to remove. |