All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Benno Lossin" <lossin@kernel.org>
To: "Danilo Krummrich" <dakr@kernel.org>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
Cc: "Matthew Maurer" <mmaurer@google.com>,
	"Miguel Ojeda" <ojeda@kernel.org>,
	"Alex Gaynor" <alex.gaynor@gmail.com>,
	"Boqun Feng" <boqun.feng@gmail.com>,
	"Gary Guo" <gary@garyguo.net>,
	"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
	"Benno Lossin" <benno.lossin@proton.me>,
	"Andreas Hindborg" <a.hindborg@kernel.org>,
	"Alice Ryhl" <aliceryhl@google.com>,
	"Trevor Gross" <tmgross@umich.edu>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	"Sami Tolvanen" <samitolvanen@google.com>,
	"Timur Tabi" <ttabi@nvidia.com>,
	linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org
Subject: Re: [PATCH v5 4/4] rust: samples: Add debugfs sample
Date: Thu, 15 May 2025 14:55:46 +0200	[thread overview]
Message-ID: <D9WR11ILWC2X.2TIYICAG4H1Q1@kernel.org> (raw)
In-Reply-To: <aCXgDHtdXb7Wf92P@pollux>

On Thu May 15, 2025 at 2:37 PM CEST, Danilo Krummrich wrote:
> On Thu, May 15, 2025 at 01:43:09PM +0200, Greg Kroah-Hartman wrote:
>> On Thu, May 15, 2025 at 10:59:44AM +0200, Benno Lossin wrote:
>> > On Wed May 14, 2025 at 11:55 PM CEST, Matthew Maurer wrote:
>> > > On Wed, May 14, 2025 at 2:07 AM Danilo Krummrich <dakr@kernel.org> wrote:
>> > >> However, I really think we should keep the code as it is in this version and
>> > >> just don't provide an example that utilizes ManuallyDrop and forget().
>> > >>
>> > >> I don't see how the idea of "manually dropping" (sub-)directories and files
>> > >> provides any real value compared to just storing their instance in a driver
>> > >> structure as long as they should stay alive, which is much more intuitive
>> > >> anyways.
>> > >
>> > > We can't easily do this, because dropping a root directory recursively
>> > > drops everything underneath it. This means that if I have
>> > >
>> > > foo/
>> > >   - bar/
>> > >   - baz/
>> > >
>> > > Then my directory handle for `bar` have to be guaranteed to outlive my
>> > > directory handle for `foo` so that I know it's didn't get deleted
>> > > under me. This is why they have a borrow onto their parent directory.
>> > > This borrow means that you can't (without `unsafe`, or something like
>> > > `yoke`) keep handles to `foo` and `bar` in the same struct.
>> > 
>> > Is there no refcount that we can use instead of borrowing? I guess not,
>> > since one can call `debugfs_remove`. What about a refcount on the rust
>> > side? or is debugfs not used for "debugging" and needs to have the
>> > performance of no refcount?
>> 
>> debugfs should never have any performance issues (i.e. you don't use it
>> for performant things.)
>> 
>> So refcount away!  That should never be an issue.
>
> Reference counting (parent) directories should lead to a much cleaner solution.
>
> I mentioned that previously, but also said in that context that it's a bit
> contrary to how the C API is utilized currently, which usually isn't desired.

We could also change the C side to use refcounting :) It is probably a
bigger change (I have no idea how common the usage of debugfs is).

In my mind, it would also allow the C side to benefit from the same
"drop the dirs that you don't need anymore and all subdirs will be
removed if they also aren't referenced any longer" thing.

> However, if we're fine with that I think it's superior to the borrowing
> solution, which requires keep(). IMHO keep() is a footgun in general, even if
> not callable for "root" directories.

I would prefer refcounting over forgetting, it much more clearly shows
who owns the debugfs dirs. Also, in which cases would one not call
`.keep()`? The USB example from the other thread comes to mind, but
there you might be able to borrow a `Dir<'static` for `'static`, are
there other cases?

---
Cheers,
Benno

  reply	other threads:[~2025-05-15 12:55 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-05 23:51 [PATCH v5 0/4] rust: DebugFS Bindings Matthew Maurer
2025-05-05 23:51 ` [PATCH v5 1/4] rust: debugfs: Bind DebugFS directory creation Matthew Maurer
2025-05-07 18:46   ` Timur Tabi
2025-05-14 22:26     ` Matthew Maurer
2025-05-14  7:33   ` Benno Lossin
2025-05-14  8:49     ` Greg Kroah-Hartman
2025-05-14  9:38       ` Benno Lossin
2025-05-05 23:51 ` [PATCH v5 2/4] rust: debugfs: Bind file creation for long-lived Display Matthew Maurer
2025-05-07 19:04   ` Timur Tabi
2025-05-07 19:41   ` Timur Tabi
2025-05-09 12:56   ` Alice Ryhl
2025-05-12 20:51   ` Timur Tabi
2025-05-14  8:06   ` Benno Lossin
2025-05-05 23:51 ` [PATCH v5 3/4] rust: debugfs: Support format hooks Matthew Maurer
2025-05-05 23:51 ` [PATCH v5 4/4] rust: samples: Add debugfs sample Matthew Maurer
2025-05-14  7:20   ` Benno Lossin
2025-05-14  9:07     ` Danilo Krummrich
2025-05-14  9:54       ` Benno Lossin
2025-05-14 11:24         ` Danilo Krummrich
2025-05-14 12:21           ` Benno Lossin
2025-05-14 13:04             ` Danilo Krummrich
2025-05-14 22:14           ` Matthew Maurer
2025-05-14 22:08         ` Matthew Maurer
2025-05-14 22:14           ` Danilo Krummrich
2025-05-14 22:23             ` Matthew Maurer
2025-05-14 22:32               ` Matthew Maurer
2025-05-14 22:40                 ` Timur Tabi
2025-05-14 22:42                   ` Matthew Maurer
2025-05-15  7:43                     ` gregkh
2025-05-15  8:50           ` Benno Lossin
2025-05-14 21:55       ` Matthew Maurer
2025-05-14 22:18         ` Danilo Krummrich
2025-05-15  8:59         ` Benno Lossin
2025-05-15 11:43           ` Greg Kroah-Hartman
2025-05-15 12:37             ` Danilo Krummrich
2025-05-15 12:55               ` Benno Lossin [this message]
2025-05-20 21:24             ` Alice Ryhl
2025-05-21  4:47               ` Greg Kroah-Hartman
2025-05-21 22:40                 ` Alice Ryhl
2025-05-21  7:57               ` Danilo Krummrich
2025-05-21 22:43                 ` Alice Ryhl
2025-05-22  6:25                   ` Danilo Krummrich
2025-05-22  8:28                     ` Greg Kroah-Hartman
2025-05-22 14:01                     ` Alice Ryhl
2025-05-22 14:15                       ` Greg Kroah-Hartman
2025-05-22 17:40                         ` Alice Ryhl
2025-05-22 20:26                           ` Benno Lossin
2025-05-23  9:15                           ` Greg Kroah-Hartman
2025-05-22 17:53                         ` Danilo Krummrich
2025-05-23  9:14                           ` Greg Kroah-Hartman
2025-05-23  9:42                             ` Danilo Krummrich
2025-05-23 10:22                               ` Greg Kroah-Hartman
2025-05-23 17:09                               ` Alice Ryhl
2025-05-24 12:25                                 ` Danilo Krummrich
2025-05-27 11:38                                   ` Alice Ryhl
2025-05-27 11:50                                     ` Danilo Krummrich
2025-06-10 17:54                                       ` Matthew Maurer
2025-05-23 17:06                             ` Alice Ryhl
2025-05-07 16:49 ` [PATCH v5 0/4] rust: DebugFS Bindings Danilo Krummrich

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=D9WR11ILWC2X.2TIYICAG4H1Q1@kernel.org \
    --to=lossin@kernel.org \
    --cc=a.hindborg@kernel.org \
    --cc=alex.gaynor@gmail.com \
    --cc=aliceryhl@google.com \
    --cc=benno.lossin@proton.me \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun.feng@gmail.com \
    --cc=dakr@kernel.org \
    --cc=gary@garyguo.net \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mmaurer@google.com \
    --cc=ojeda@kernel.org \
    --cc=rafael@kernel.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=samitolvanen@google.com \
    --cc=tmgross@umich.edu \
    --cc=ttabi@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.