On Tue, 22 Jan 2008 15:13:58 -0800
Dave Hansen <[EMAIL PROTECTED]> wrote:

> @@ -566,10 +567,26 @@ static void mark_files_ro(struct super_b
>  {
>       struct file *f;
>  
> +retry:
>       file_list_lock();
>       list_for_each_entry(f, &sb->s_files, f_u.fu_list) {
> -             if (S_ISREG(f->f_path.dentry->d_inode->i_mode) && file_count(f))
> -                     f->f_mode &= ~FMODE_WRITE;
> +             struct vfsmount mnt;
> +             if (!S_ISREG(f->f_path.dentry->d_inode->i_mode))
> +                    continue;
> +             if (!file_count(f))
> +                     continue;
> +             if (!(f->f_mode & FMODE_WRITE))
> +                     continue;
> +             f->f_mode &= ~FMODE_WRITE;
> +             f->f_mnt_write_state |= FILE_MNT_WRITE_RELEASED;
> +             mnt = f->f_path.mnt;
> +             file_list_unlock();
> +             /*
> +              * This can sleep, so we can't hold
> +              * the file_list_lock() spinlock.
> +              */
> +             mnt_drop_write(mnt);
> +             goto retry;
>       }
>       file_list_unlock();
>  }
> _

this doesn't even compile.  How much confidence am I supposed
to have that once I've fixed it, it will actually work?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to