Commit 85d7d618 authored by Al Viro's avatar Al Viro

mark_files_ro(): don't bother with mntget/mntput

mnt_drop_write_file() is safe under any lock
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent c4107b30
...@@ -483,10 +483,8 @@ void mark_files_ro(struct super_block *sb) ...@@ -483,10 +483,8 @@ void mark_files_ro(struct super_block *sb)
{ {
struct file *f; struct file *f;
retry:
lg_global_lock(&files_lglock); lg_global_lock(&files_lglock);
do_file_list_for_each_entry(sb, f) { do_file_list_for_each_entry(sb, f) {
struct vfsmount *mnt;
if (!S_ISREG(f->f_path.dentry->d_inode->i_mode)) if (!S_ISREG(f->f_path.dentry->d_inode->i_mode))
continue; continue;
if (!file_count(f)) if (!file_count(f))
...@@ -499,12 +497,7 @@ void mark_files_ro(struct super_block *sb) ...@@ -499,12 +497,7 @@ void mark_files_ro(struct super_block *sb)
if (file_check_writeable(f) != 0) if (file_check_writeable(f) != 0)
continue; continue;
file_release_write(f); file_release_write(f);
mnt = mntget(f->f_path.mnt); mnt_drop_write_file(f);
/* This can sleep, so we can't hold the spinlock. */
lg_global_unlock(&files_lglock);
mnt_drop_write(mnt);
mntput(mnt);
goto retry;
} while_file_list_for_each_entry; } while_file_list_for_each_entry;
lg_global_unlock(&files_lglock); lg_global_unlock(&files_lglock);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment