[Devel] Re: [PATCH 21/25] sysfs: sysfs_chmod_file handle multiple superblocks
Tejun Heo
htejun at gmail.com
Wed Aug 8 02:38:30 PDT 2007
On Tue, Aug 07, 2007 at 03:32:46PM -0600, Eric W. Biederman wrote:
>
> Teach sysfs_chmod_file how to handle multiple sysfs
> superblocks. We need to iterate over each superblock
> so that we give all of the appropriate filesystem modification
> notifications.
>
> Signed-off-by: Eric W. Biederman <ebiederm at xmission.com>
> ---
> fs/sysfs/file.c | 41 +++++++++++++++++++++++++----------------
> 1 files changed, 25 insertions(+), 16 deletions(-)
>
> diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c
> index f954b9f..cff054f 100644
> --- a/fs/sysfs/file.c
> +++ b/fs/sysfs/file.c
> @@ -501,7 +501,8 @@ int sysfs_update_file(struct kobject * kobj, const struct attribute * attr)
> int sysfs_chmod_file(struct kobject *kobj, struct attribute *attr, mode_t mode)
> {
> struct sysfs_dirent *victim_sd = NULL;
> - struct dentry *victim = NULL;
> + struct super_block *sb;
> + struct dentry *victim;
> struct inode * inode;
> struct iattr newattrs;
> int rc;
> @@ -512,22 +513,30 @@ int sysfs_chmod_file(struct kobject *kobj, struct attribute *attr, mode_t mode)
> goto out;
>
> mutex_lock(&sysfs_rename_mutex);
> - victim = sysfs_get_dentry(sysfs_sb, victim_sd);
> - mutex_unlock(&sysfs_rename_mutex);
> - if (IS_ERR(victim)) {
> - rc = PTR_ERR(victim);
> - victim = NULL;
> - goto out;
> + sysfs_grab_supers();
> + list_for_each_entry(sb, &sysfs_fs_type.fs_supers, s_instances) {
> + victim = sysfs_get_dentry(sb, victim_sd);
> + if (!victim)
> + continue;
> + if (IS_ERR(victim)) {
> + rc = PTR_ERR(victim);
> + victim = NULL;
> + goto out_unlock;
Hmmm... Please fix sysfs_get_dentry() and make it return either NULL
or PTR_ERR() values. Returning both is pretty confusing. Also, it
would be nice if we can use the rename_prep stuff for this too but it
might just be a wishful thinking.
Thanks.
--
tejun
_______________________________________________
Containers mailing list
Containers at lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers
More information about the Devel
mailing list