From: Mateusz Guzik <mjguzik@gmail.com>
To: brauner@kernel.org
Cc: viro@zeniv.linux.org.uk, jack@suse.cz,
linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
Mateusz Guzik <mjguzik@gmail.com>
Subject: [PATCH v5 2/4] fs: relocate and tidy up ihold()
Date: Tue, 31 Mar 2026 18:08:49 +0200 [thread overview]
Message-ID: <20260331160851.3854954-3-mjguzik@gmail.com> (raw)
In-Reply-To: <20260331160851.3854954-1-mjguzik@gmail.com>
The placement was illogical, move it next to igrab().
Take this opportunity to add docs and an assert on the refcount. While
its modification remains gated with a WARN_ON, the new assert will also
dump the inode state which might aid debugging.
No functional changes.
Signed-off-by: Mateusz Guzik <mjguzik@gmail.com>
---
fs/inode.c | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/fs/inode.c b/fs/inode.c
index 1f5a383ccf27..e397a4b56671 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -522,15 +522,6 @@ static void init_once(void *foo)
inode_init_once(inode);
}
-/*
- * get additional reference to inode; caller must already hold one.
- */
-void ihold(struct inode *inode)
-{
- WARN_ON(atomic_inc_return(&inode->i_count) < 2);
-}
-EXPORT_SYMBOL(ihold);
-
struct wait_queue_head *inode_bit_waitqueue(struct wait_bit_queue_entry *wqe,
struct inode *inode, u32 bit)
{
@@ -1578,6 +1569,17 @@ ino_t iunique(struct super_block *sb, ino_t max_reserved)
}
EXPORT_SYMBOL(iunique);
+/**
+ * ihold - get a reference on the inode, provided you already have one
+ * @inode: inode to operate on
+ */
+void ihold(struct inode *inode)
+{
+ VFS_BUG_ON_INODE(icount_read_once(inode) < 1, inode);
+ WARN_ON(atomic_inc_return(&inode->i_count) < 2);
+}
+EXPORT_SYMBOL(ihold);
+
struct inode *igrab(struct inode *inode)
{
spin_lock(&inode->i_lock);
--
2.48.1
next prev parent reply other threads:[~2026-03-31 16:09 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-31 16:08 [PATCH v5 0/4] assorted ->i_count changes + extension of lockless handling Mateusz Guzik
2026-03-31 16:08 ` [PATCH v5 1/4] fs: add icount_read_once() and stop open-coding ->i_count loads Mateusz Guzik
2026-04-01 17:29 ` Jan Kara
2026-03-31 16:08 ` Mateusz Guzik [this message]
2026-04-01 17:28 ` [PATCH v5 2/4] fs: relocate and tidy up ihold() Jan Kara
2026-03-31 16:08 ` [PATCH v5 3/4] fs: handle potential filesystems which use I_DONTCACHE and drop the lock in ->drop_inode Mateusz Guzik
2026-04-01 17:45 ` Jan Kara
2026-04-01 18:50 ` Mateusz Guzik
2026-04-09 13:40 ` Christian Brauner
2026-04-09 14:55 ` Mateusz Guzik
2026-04-10 9:41 ` Christian Brauner
2026-03-31 16:08 ` [PATCH v5 4/4] fs: allow lockless ->i_count bumps as long as it does not transition 0->1 Mateusz Guzik
2026-04-08 17:01 ` Jan Kara
2026-04-18 12:32 ` Mateusz Guzik
2026-04-20 7:56 ` Jan Kara
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=20260331160851.3854954-3-mjguzik@gmail.com \
--to=mjguzik@gmail.com \
--cc=brauner@kernel.org \
--cc=jack@suse.cz \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=viro@zeniv.linux.org.uk \
/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.