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 <[EMAIL PROTECTED]>
> ---
>  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
[EMAIL PROTECTED]
https://lists.linux-foundation.org/mailman/listinfo/containers

_______________________________________________
Devel mailing list
[email protected]
https://openvz.org/mailman/listinfo/devel

Reply via email to