[PATCH 05/10] xfs: skip all of xfs_file_release when shut down

Christoph Hellwig
2024-06-23T05:35:54Z

There is no point in trying to free post-EOF blocks when the file system
is shutdown, as it will just error out ASAP. Instead return instantly
when xfs_file_shutdown is called on a shut down file system.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
fs/xfs/xfs_file.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
index 7b91cbab80da55..0380e0b1d9c6c7 100644
--- a/fs/xfs/xfs_file.c
+++ b/fs/xfs/xfs_file.c
@@ -1198,8 +1198,11 @@ xfs_file_release(
struct xfs_inode *ip = XFS_I(inode);
struct xfs_mount *mp = ip->i_mount;

- /* If this is a read-only mount, don't generate I/O */
- if (xfs_is_readonly(mp))
+ /*
+ * If this is a read-only mount or the file system has been shut down,
+ * don't generate I/O.
+ */
+ if (xfs_is_readonly(mp) || xfs_is_shutdown(mp))
return 0;

/*
@@ -1211,8 +1214,7 @@ xfs_file_release(
* is significantly reducing the time window where we'd otherwise be
* exposed to that problem.
*/
- if (!xfs_is_shutdown(mp) &&
- xfs_iflags_test_and_clear(ip, XFS_ITRUNCATED)) {
+ if (xfs_iflags_test_and_clear(ip, XFS_ITRUNCATED)) {
xfs_iflags_clear(ip, XFS_IDIRTY_RELEASE);
if (ip->i_delayed_blks > 0)
filemap_flush(inode->i_mapping);
--
2.43.0