From: Steven Rostedt <rostedt@goodmis.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Masami Hiramatsu <mhiramat@kernel.org>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
LKML <linux-kernel@vger.kernel.org>,
Linux Trace Devel <linux-trace-devel@vger.kernel.org>,
Christian Brauner <brauner@kernel.org>,
Ajay Kaher <ajay.kaher@broadcom.com>,
Geert Uytterhoeven <geert@linux-m68k.org>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>
Subject: Re: [PATCH] eventfs: Have inodes have unique inode numbers
Date: Sun, 28 Jan 2024 17:01:25 -0500 [thread overview]
Message-ID: <20240128170125.7d51aa8f@rorschach.local.home> (raw)
In-Reply-To: <CAHk-=wiWo9Ern_MKkWJ-6MEh6fUtBtwU3avQRm=N51VsHevzQg@mail.gmail.com>
On Sun, 28 Jan 2024 13:08:55 -0800
Linus Torvalds <torvalds@linux-foundation.org> wrote:
> On Sun, 28 Jan 2024 at 12:53, Linus Torvalds
> <torvalds@linux-foundation.org> wrote:
> >
> > Now, the RCU delay may be needed if the lookup of said structure
> > happens under RCU, but no, saying "I use SRCU to make sure the
> > lifetime is at least X" is just broken.
>
> Put another way, the only reason for any RCU should be that you don't
> use locking at lookup, and the normal lookup routine should follow a
> pattern something like this:
>
> rcu_read_lock();
> entry = find_entry(...);
> if (entry && !atomic_inc_not_zero(&entry->refcount))
> entry = NULL;
> rcu_read_unlock();
>
> and the freeing should basically follow a pattern like
>
> if (atomic_dec_and_test(&entry->refcount))
> rcu_free(entry);
Basically you are saying that when the ei is created, it should have a
ref count of 1. If the lookup happens and does the
atomic_inc_not_zero() it will only increment if the ref count is not 0
(which is basically equivalent to is_freed).
And then we can have deletion of the object happen in both where the
caller (kprobes) deletes the directory and in the final iput()
reference (can I use iput and not the d_release()?), that it does the
same as well.
Where whatever sees the refcount of zero calls rcu_free?
-- Steve
next prev parent reply other threads:[~2024-01-28 22:01 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-26 20:02 [PATCH] eventfs: Have inodes have unique inode numbers Steven Rostedt
2024-01-26 20:25 ` Linus Torvalds
2024-01-26 21:26 ` Steven Rostedt
2024-01-26 21:31 ` Linus Torvalds
2024-01-26 21:43 ` Steven Rostedt
2024-01-26 21:36 ` Linus Torvalds
2024-01-26 21:42 ` Steven Rostedt
2024-01-26 21:49 ` Linus Torvalds
2024-01-26 22:08 ` Steven Rostedt
2024-01-26 22:26 ` Linus Torvalds
2024-01-27 14:47 ` Steven Rostedt
2024-01-28 14:42 ` Steven Rostedt
2024-01-26 22:14 ` Mathieu Desnoyers
2024-01-26 22:29 ` Linus Torvalds
2024-01-26 22:41 ` Mathieu Desnoyers
2024-01-26 22:49 ` Linus Torvalds
2024-01-29 16:00 ` Mathieu Desnoyers
2024-01-29 18:58 ` Linus Torvalds
2024-01-26 22:34 ` Matthew Wilcox
2024-01-26 22:40 ` Mathieu Desnoyers
2024-01-26 22:48 ` Linus Torvalds
2024-01-26 23:04 ` Matthew Wilcox
2024-01-26 23:11 ` Linus Torvalds
2024-01-26 23:17 ` Linus Torvalds
2024-01-27 9:36 ` Andreas Schwab
2024-01-27 21:47 ` Linus Torvalds
2024-01-28 20:15 ` Steven Rostedt
2024-01-28 20:53 ` Linus Torvalds
2024-01-28 21:08 ` Linus Torvalds
2024-01-28 22:01 ` Steven Rostedt [this message]
2024-01-28 22:17 ` Linus Torvalds
2024-01-28 22:26 ` Steven Rostedt
2024-01-28 21:11 ` Steven Rostedt
2024-01-28 21:19 ` Steven Rostedt
2024-01-28 21:43 ` Linus Torvalds
2024-01-28 22:07 ` Linus Torvalds
2024-01-28 22:17 ` Steven Rostedt
2024-01-28 22:25 ` Linus Torvalds
2024-01-28 22:51 ` Steven Rostedt
2024-01-28 23:24 ` Linus Torvalds
2024-01-28 23:59 ` Steven Rostedt
2024-01-29 0:21 ` Steven Rostedt
2024-01-29 1:00 ` Linus Torvalds
2024-01-29 1:42 ` Linus Torvalds
2024-01-29 2:32 ` Steven Rostedt
2024-01-29 3:40 ` Steven Rostedt
2024-01-29 4:01 ` Linus Torvalds
2024-01-29 2:09 ` Steven Rostedt
2024-01-29 6:44 ` Amir Goldstein
2024-01-29 9:32 ` Steven Rostedt
2024-01-27 15:26 ` David Laight
2024-01-27 20:01 ` Linus Torvalds
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=20240128170125.7d51aa8f@rorschach.local.home \
--to=rostedt@goodmis.org \
--cc=ajay.kaher@broadcom.com \
--cc=brauner@kernel.org \
--cc=geert@linux-m68k.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-devel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=torvalds@linux-foundation.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).