On Tue, 22 Jan 2008 15:13:58 -0800 Dave Hansen <haveblue@xxxxxxxxxx> 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 sparclinux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html