Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+1 −8
Original line number Original line Diff line number Diff line
@@ -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)
		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);
}
}