public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
From: Mahmoud Adam <mngyadam@amazon.com>
To: <gregkh@linuxfoundation.org>
Cc: <djwong@kernel.org>, <stable@vger.kernel.org>
Subject: [PATCH 6.1 1/6] xfs: allow inode inactivation during a ro mount log recovery
Date: Wed, 3 Apr 2024 14:59:46 +0200	[thread overview]
Message-ID: <20240403125949.33676-2-mngyadam@amazon.com> (raw)
In-Reply-To: <20240403125949.33676-1-mngyadam@amazon.com>

From: "Darrick J. Wong" <djwong@kernel.org>

commit 76e589013fec672c3587d6314f2d1f0aeddc26d9 upstream.

In the next patch, we're going to prohibit log recovery if the primary
superblock contains an unrecognized rocompat feature bit even on
readonly mounts.  This requires removing all the code in the log
mounting process that temporarily disables the readonly state.

Unfortunately, inode inactivation disables itself on readonly mounts.
Clearing the iunlinked lists after log recovery needs inactivation to
run to free the unreferenced inodes, which (AFAICT) is the only reason
why log mounting plays games with the readonly state in the first place.

Therefore, change the inactivation predicates to allow inactivation
during log recovery of a readonly mount.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Mahmoud Adam <mngyadam@amazon.com>
---
 fs/xfs/xfs_inode.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c
index aa303be11576..0468243bcee6 100644
--- a/fs/xfs/xfs_inode.c
+++ b/fs/xfs/xfs_inode.c
@@ -1652,8 +1652,11 @@ xfs_inode_needs_inactive(
 	if (VFS_I(ip)->i_mode == 0)
 		return false;

-	/* If this is a read-only mount, don't do this (would generate I/O) */
-	if (xfs_is_readonly(mp))
+	/*
+	 * If this is a read-only mount, don't do this (would generate I/O)
+	 * unless we're in log recovery and cleaning the iunlinked list.
+	 */
+	if (xfs_is_readonly(mp) && !xlog_recovery_needed(mp->m_log))
 		return false;

 	/* If the log isn't running, push inodes straight to reclaim. */
@@ -1713,8 +1716,11 @@ xfs_inactive(
 	mp = ip->i_mount;
 	ASSERT(!xfs_iflags_test(ip, XFS_IRECOVERY));

-	/* If this is a read-only mount, don't do this (would generate I/O) */
-	if (xfs_is_readonly(mp))
+	/*
+	 * If this is a read-only mount, don't do this (would generate I/O)
+	 * unless we're in log recovery and cleaning the iunlinked list.
+	 */
+	if (xfs_is_readonly(mp) && !xlog_recovery_needed(mp->m_log))
 		goto out;

 	/* Metadata inodes require explicit resource cleanup. */
--
2.40.1

  reply	other threads:[~2024-04-03 13:00 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-03 12:59 [PATCH 6.1 0/6] backport xfs fix patches reported by xfs/179/270/557/606 Mahmoud Adam
2024-04-03 12:59 ` Mahmoud Adam [this message]
2024-04-03 12:59 ` [PATCH 6.1 2/6] xfs: fix log recovery when unknown rocompat bits are set Mahmoud Adam
2024-04-03 12:59 ` [PATCH 6.1 3/6] xfs: get root inode correctly at bulkstat Mahmoud Adam
2024-04-03 12:59 ` [PATCH 6.1 4/6] xfs: short circuit xfs_growfs_data_private() if delta is zero Mahmoud Adam
2024-04-03 12:59 ` [PATCH 6.1 5/6] xfs: hoist refcount record merge predicates Mahmoud Adam
2024-04-03 12:59 ` [PATCH 6.1 6/6] xfs: estimate post-merge refcounts correctly Mahmoud Adam
2024-04-03 18:18 ` [PATCH 6.1 0/6] backport xfs fix patches reported by xfs/179/270/557/606 Darrick J. Wong
2024-04-04  5:45   ` Amir Goldstein
2024-04-04  9:15     ` Mahmoud Adam
2024-04-05  9:27       ` Greg KH
2024-04-05  9:55         ` Amir Goldstein
2024-04-11  7:22           ` Greg KH
2024-04-11 17:27             ` Leah Rumancik

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=20240403125949.33676-2-mngyadam@amazon.com \
    --to=mngyadam@amazon.com \
    --cc=djwong@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=stable@vger.kernel.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