Re: [PATCH v11 1/5] fs: add iput_if_not_last() helper

From: Zhou, Yun

Date: Thu Jul 02 2026 - 10:58:10 EST


Hi Honza,

On 7/2/2026 10:29 PM, Jan Kara wrote:

Hi!

On Thu 02-07-26 21:35:47, Zhou, Yun wrote:
On 6/30/2026 7:34 PM, Jan Kara wrote:
On Tue 30-06-26 11:05:50, Mateusz Guzik wrote:
On Mon, Jun 29, 2026 at 07:08:44PM +0800, Yun Zhou wrote:
Unlike iput_not_last() which BUG_ON's if called with the last ref,
this variant is designed to be called speculatively.

Signed-off-by: Yun Zhou <yun.zhou@xxxxxxxxxxxxx>
Suggested-by: Jan Kara <jack@xxxxxxx>
Reviewed-by: Jan Kara <jack@xxxxxxx>
---
include/linux/fs.h | 13 +++++++++++++
1 file changed, 13 insertions(+)

diff --git a/include/linux/fs.h b/include/linux/fs.h
index d10897b3a1e3..04f0de78fa7a 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -2413,6 +2413,19 @@ static inline void super_set_sysfs_name_generic(struct super_block *sb, const ch
extern void ihold(struct inode * inode);
extern void iput(struct inode *);
void iput_not_last(struct inode *);
+
+/**
+ * iput_if_not_last - drop an inode reference only if it is not the last one
+ * @inode: inode to put
+ *
+ * Returns true if the reference was dropped, false if this was the last
+ * reference and the caller must arrange for final iput() in a safe context.
+ */
+static inline bool __must_check iput_if_not_last(struct inode *inode)
+{
+ return atomic_add_unless(&inode->i_count, -1, 1);
+}
+

This still could assert on the count, for example:
VFS_BUG_ON_INODE(inode_state_read_once(inode) & (I_FREEING | I_CLEAR), inode);
VFS_BUG_ON_INODE(atomic_read(&inode->i_count) < 1, inode);

Yes, it makes sense to be consistent with other helpers. Thanks for the
idea.

Should I wait for now, or go ahead and include the two macros mentioned
above in v13 as Mateusz suggested? As you know, the v12 series has been
fully reviewed [1] , and I'm wondering if making this change now might cause
any inconvenience to everyone.

[1] https://lore.kernel.org/linux-ext4/20260630100829.1257618-1-yun.zhou@xxxxxxxxxxxxx/T/#t

I think there will be no more feedback to this series. So just include this
suggested change (keeping current Reviewed-by tags - the change is minimal)
and submit one more version. Mention in the cover letter that there's only
minor adjustment to this one patch, everything is reviewed and ready to be
merged so that Ted knows.

Honza
--
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR

Okay, I'll get right on it. Thank you very much for your reply and your strong support on this patch series.

BR,
Yun