Re: [PATCH] fs: delay sysctl_nr_open check in expand_files()
From: Al Viro
Date: Sat Nov 16 2024 - 02:36:42 EST
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?