From: "Darrick J. Wong" <djwong@kernel.org>
To: djwong@kernel.org
Cc: linux-xfs@vger.kernel.org, david@fromorbit.com, hch@infradead.org
Subject: [PATCH 09/14] xfs: clean up the blockgc grab and scan calls a little
Date: Tue, 01 Jun 2021 17:53:22 -0700 [thread overview]
Message-ID: <162259520214.662681.11530601934737637661.stgit@locust> (raw)
In-Reply-To: <162259515220.662681.6750744293005850812.stgit@locust>
From: Darrick J. Wong <djwong@kernel.org>
Tidy these two functions a bit by adjusting the names so that they
communicate that they belong to blockgc and nothing else; and establish
that the igrab in the blockgc grab function has to have a matching irele
in the blockgc scan function.
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
fs/xfs/xfs_icache.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/fs/xfs/xfs_icache.c b/fs/xfs/xfs_icache.c
index 5c17bed8edb2..5922010b956d 100644
--- a/fs/xfs/xfs_icache.c
+++ b/fs/xfs/xfs_icache.c
@@ -1518,6 +1518,10 @@ xfs_blockgc_start(
xfs_blockgc_queue(pag);
}
+/* Don't try to run block gc on an inode that's in any of these states. */
+#define XFS_BLOCKGC_NOGRAB_IFLAGS (XFS_INEW | \
+ XFS_IRECLAIMABLE | \
+ XFS_IRECLAIM)
/*
* Decide if the given @ip is eligible for garbage collection of speculative
* preallocations, and grab it if so. Returns true if it's ready to go or
@@ -1536,8 +1540,7 @@ xfs_blockgc_igrab(
if (!ip->i_ino)
goto out_unlock_noent;
- /* avoid new or reclaimable inodes. Leave for reclaim code to flush */
- if (__xfs_iflags_test(ip, XFS_INEW | XFS_IRECLAIMABLE | XFS_IRECLAIM))
+ if (ip->i_flags & XFS_BLOCKGC_NOGRAB_IFLAGS)
goto out_unlock_noent;
spin_unlock(&ip->i_flags_lock);
@@ -1574,6 +1577,7 @@ xfs_blockgc_scan_inode(
unlock:
if (lockflags)
xfs_iunlock(ip, lockflags);
+ xfs_irele(ip);
return error;
}
@@ -1775,12 +1779,12 @@ xfs_inode_walk_ag(
switch (goal) {
case XFS_ICWALK_DQRELE:
error = xfs_dqrele_inode(batch[i], args);
+ xfs_irele(batch[i]);
break;
case XFS_ICWALK_BLOCKGC:
error = xfs_blockgc_scan_inode(batch[i], args);
break;
}
- xfs_irele(batch[i]);
if (error == -EAGAIN) {
skipped++;
continue;
next prev parent reply other threads:[~2021-06-02 0:53 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-02 0:52 [PATCHSET v5 00/14] xfs: clean up incore inode walk functions Darrick J. Wong
2021-06-02 0:52 ` [PATCH 01/14] xfs: move the quotaoff dqrele inode walk into xfs_icache.c Darrick J. Wong
2021-06-02 1:23 ` Dave Chinner
2021-06-02 0:52 ` [PATCH 02/14] xfs: detach inode dquots at the end of inactivation Darrick J. Wong
2021-06-02 0:52 ` [PATCH 03/14] xfs: move the inode walk functions further down Darrick J. Wong
2021-06-02 1:26 ` Dave Chinner
2021-06-02 0:52 ` [PATCH 04/14] xfs: pass the goal of the incore inode walk to xfs_inode_walk() Darrick J. Wong
2021-06-02 1:42 ` Dave Chinner
2021-06-02 0:53 ` [PATCH 05/14] xfs: separate the dqrele_all inode grab logic from xfs_inode_walk_ag_grab Darrick J. Wong
2021-06-02 1:51 ` Dave Chinner
2021-06-02 3:28 ` Darrick J. Wong
2021-06-02 0:53 ` [PATCH 06/14] xfs: move xfs_inew_wait call into xfs_dqrele_inode Darrick J. Wong
2021-06-02 1:52 ` Dave Chinner
2021-06-02 0:53 ` [PATCH 07/14] xfs: remove iter_flags parameter from xfs_inode_walk_* Darrick J. Wong
2021-06-02 1:53 ` Dave Chinner
2021-06-02 0:53 ` [PATCH 08/14] xfs: remove indirect calls from xfs_inode_walk{,_ag} Darrick J. Wong
2021-06-02 2:00 ` Dave Chinner
2021-06-02 0:53 ` Darrick J. Wong [this message]
2021-06-02 0:53 ` [PATCH 10/14] xfs: clean up xfs_dqrele_inode calling conventions Darrick J. Wong
2021-06-02 0:53 ` [PATCH 11/14] xfs: fix radix tree tag signs Darrick J. Wong
2021-06-02 2:02 ` Dave Chinner
2021-06-02 0:53 ` [PATCH 12/14] xfs: pass struct xfs_eofblocks to the inode scan callback Darrick J. Wong
2021-06-02 2:04 ` Dave Chinner
2021-06-02 6:15 ` Darrick J. Wong
2021-06-02 0:53 ` [PATCH 13/14] xfs: merge xfs_reclaim_inodes_ag into xfs_inode_walk_ag Darrick J. Wong
2021-06-02 2:10 ` Dave Chinner
2021-06-02 6:16 ` Darrick J. Wong
2021-06-02 0:53 ` [PATCH 14/14] xfs: refactor per-AG inode tagging functions Darrick J. Wong
2021-06-02 2:22 ` Dave Chinner
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=162259520214.662681.11530601934737637661.stgit@locust \
--to=djwong@kernel.org \
--cc=david@fromorbit.com \
--cc=hch@infradead.org \
--cc=linux-xfs@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