Re: [PATCH v2] vfs: don't unnecessarily clone write access for writable fds
From: Al Viro
Date: Wed Sep 16 2020 - 20:54:53 EST
On Tue, Sep 15, 2020 at 08:59:14PM -0700, Eric Biggers wrote:
> On Mon, Jun 29, 2020 at 09:50:14AM -0700, Eric Biggers wrote:
> > On Thu, Jun 11, 2020 at 09:05:34AM -0700, Eric Biggers wrote:
> > > From: Eric Biggers <ebiggers@xxxxxxxxxx>
> > >
> > > 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.
Umm... That really needs to be put into D/f/porting; this kind of rule changes
(from "it used to work both ways" to "things quietly break if you use the
old variant") should come with explicit statement in there.
I'm certainly fine with unexporting mnt_clone_write() and making the damn
thing static, but as for the rest I would put an explicit "don't pair
mnt_drop_write() with mnt_want_write_file()" and wait for a cycle.