diff options
author | Eric Biggers <ebiggers@google.com> | 2020-09-22 09:44:18 -0700 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2021-01-04 14:02:08 -0500 |
commit | 14e43bf435612639cab01541fce7cc41bf7e370b (patch) | |
tree | d0a418ace1f97fbdc4ad4fcf88ce5119237bccdd /include/linux/mount.h | |
parent | 5c8fe583cce542aa0b84adc939ce85293de36e5e (diff) | |
download | linux-stable-14e43bf435612639cab01541fce7cc41bf7e370b.tar.gz linux-stable-14e43bf435612639cab01541fce7cc41bf7e370b.tar.bz2 linux-stable-14e43bf435612639cab01541fce7cc41bf7e370b.zip |
vfs: don't unnecessarily clone write access for writable fds
There's no need for mnt_want_write_file() to increment mnt_writers when
the file is already open for writing, provided that
mnt_drop_write_file() is changed to conditionally decrement it.
We seem to have ended up in the current situation because
mnt_want_write_file() used to be paired with mnt_drop_write(), due to
mnt_drop_write_file() not having been added yet. So originally
mnt_want_write_file() had to always increment mnt_writers.
But later mnt_drop_write_file() was added, and all callers of
mnt_want_write_file() were paired with it. This makes the compatibility
between mnt_want_write_file() and mnt_drop_write() no longer necessary.
Therefore, make __mnt_want_write_file() and __mnt_drop_write_file() skip
incrementing mnt_writers on files already open for writing. This
removes the only caller of mnt_clone_write(), so remove that too.
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'include/linux/mount.h')
-rw-r--r-- | include/linux/mount.h | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/include/linux/mount.h b/include/linux/mount.h index aaf343b38671..b43191fe6af7 100644 --- a/include/linux/mount.h +++ b/include/linux/mount.h @@ -79,7 +79,6 @@ struct path; extern int mnt_want_write(struct vfsmount *mnt); extern int mnt_want_write_file(struct file *file); -extern int mnt_clone_write(struct vfsmount *mnt); extern void mnt_drop_write(struct vfsmount *mnt); extern void mnt_drop_write_file(struct file *file); extern void mntput(struct vfsmount *mnt); |