]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
xfs: skip all of xfs_file_release when shut down
authorChristoph Hellwig <hch@lst.de>
Tue, 13 Aug 2024 07:39:37 +0000 (09:39 +0200)
committerChandan Babu R <chandanbabu@kernel.org>
Tue, 3 Sep 2024 04:37:38 +0000 (10:07 +0530)
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_release is called on a shut down file system.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
fs/xfs/xfs_file.c

index 17dfbaca1c581cddfdd876fc372e9ec80b494a05..dae8dd1223550d935252067aeb66c8e319547b3c 100644 (file)
@@ -1187,8 +1187,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;
 
        /*
@@ -1200,8 +1203,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);