[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20241116073626.GB3387508@ZenIV>
Date: Sat, 16 Nov 2024 07:36:26 +0000
From: Al Viro <viro@...iv.linux.org.uk>
To: Mateusz Guzik <mjguzik@...il.com>
Cc: brauner@...nel.org, jack@...e.cz, linux-kernel@...r.kernel.org,
linux-fsdevel@...r.kernel.org
Subject: Re: [PATCH] fs: delay sysctl_nr_open check in expand_files()
On Sat, Nov 16, 2024 at 07:41:28AM +0100, Mateusz Guzik wrote:
> Suppose a thread sharing the table started a resize, while
> sysctl_nr_open got lowered to a value which prohibits it. This is still
> going to go through with and without the patch, which is fine.
>
> Further suppose another thread shows up to do a matching expansion while
> resize_in_progress == true. It is going to error out since it performs
> the sysctl_nr_open check *before* finding out if there is an expansion
> in progress. But the aformentioned thread is going to succeded, so the
> error is spurious (and it would not happen if the thread showed up a
> little bit later).
>
> Checking the sysctl *after* we know there are no pending updates sorts
> it out.
What for? No, seriously - what's the point? What could possibly
observe an inconsistent situation? How would that look like?
Powered by blists - more mailing lists