1

xfs: skip all of xfs_file_release when shut down

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>
This commit is contained in:
Christoph Hellwig 2024-08-13 09:39:37 +02:00 committed by Chandan Babu R
parent 98e44e2bc0
commit c741d79c1a

View File

@ -1187,8 +1187,11 @@ xfs_file_release(
struct xfs_inode *ip = XFS_I(inode); struct xfs_inode *ip = XFS_I(inode);
struct xfs_mount *mp = ip->i_mount; 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; return 0;
/* /*
@ -1200,8 +1203,7 @@ xfs_file_release(
* is significantly reducing the time window where we'd otherwise be * is significantly reducing the time window where we'd otherwise be
* exposed to that problem. * exposed to that problem.
*/ */
if (!xfs_is_shutdown(mp) && if (xfs_iflags_test_and_clear(ip, XFS_ITRUNCATED)) {
xfs_iflags_test_and_clear(ip, XFS_ITRUNCATED)) {
xfs_iflags_clear(ip, XFS_IDIRTY_RELEASE); xfs_iflags_clear(ip, XFS_IDIRTY_RELEASE);
if (ip->i_delayed_blks > 0) if (ip->i_delayed_blks > 0)
filemap_flush(inode->i_mapping); filemap_flush(inode->i_mapping);