[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAGudoHEgnvyS=ZNcVHoBr69OAF_ZUCqxx3HLqNYyk2fyFq6F3Q@mail.gmail.com>
Date: Tue, 1 Apr 2025 14:21:17 +0200
From: Mateusz Guzik <mjguzik@...il.com>
To: Alexey Dobriyan <adobriyan@...il.com>
Cc: Christian Brauner <brauner@...nel.org>, Al Viro <viro@...iv.linux.org.uk>, Jan Kara <jack@...e.cz>,
Linux Kernel <linux-kernel@...r.kernel.org>,
linux-fsdevel <linux-fsdevel@...r.kernel.org>
Subject: Re: [PATCH 1/2] proc: add a helper for marking files as permanent by
external consumers
On Tue, Apr 1, 2025 at 2:17 PM Mateusz Guzik <mjguzik@...il.com> wrote:
>
> On Tue, Apr 1, 2025 at 1:14 PM Alexey Dobriyan <adobriyan@...il.com> wrote:
> >
> > > +void proc_make_permanent(struct proc_dir_entry *de)
> > > +{
> > > + pde_make_permanent(de);
> > > +}
> > > +EXPORT_SYMBOL(proc_make_permanent);
> >
> > no, no, no, no
> >
> > this is wrong!
> >
> > marking should be done in the context of a module!
> >
> > the reason it is not exported is because the aren't safeguards against
> > module misuse
> >
> > the flag is supposed to be used in case where
> > a) PDE itself is never removed and,
> > b) all the code supporting is never removed,
> > so that locking can be skipped
> >
> > this it fine to mark /proc/filesystems because kernel controls it
> >
> > this is fine to mark /proc/aaa if all module does is to write some
> > info to it and deletes it during rmmod
> >
> > but it is not fine to mark /proc/aaa/bbb if "bbb" is created/deleted
> > while module is running,
> > locking _must_ be done in this case
>
> Well I'm unhappy to begin with
unhappy with the API :)
> but did not want to do anything
> churn-inducing. The above looks like a minimal solution to me.
>
> The pde_ marking things are in an internal header and I did not want
> to move them around.
>
> If anything I'm surprised there is no mechanism to get this done (I
> assumed there would be a passable flags argument, but got nothing).
>
> What I need here is that /proc/filesystems thing sorted out, as in this call:
> > proc_create_single("filesystems", 0, NULL, filesystems_proc_show);
>
> Would you be ok with adding proc_create_single_permanent() which hides
> the logic and is not exported to modules?
>
This still does not add a 'flags' argument, but given limited number
of consumers perhaps it is fine?
I'm not going to push for any specific solution as long as
/proc/filesystems gets to shed the overhead.
If you don't like the idea of proc_create_single_permanent(), then
perhaps it would be least back-and-forth inducing if you did whatever
change which you think is fine and then I just use it? There is
absolutely no rush.
--
Mateusz Guzik <mjguzik gmail.com>
Powered by blists - more mailing lists