Message ID | 20250113043259.2054322-1-hch@lst.de (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
Series | [1/2] xfs: don't take m_sb_lock in xfs_fs_statfs | expand |
On Mon, 13 Jan 2025 05:32:58 +0100, Christoph Hellwig wrote: > The only non-constant value read under m_sb_lock in xfs_fs_statfs is > sb_dblocks, and it could become stale right after dropping the lock > anyway. Remove the thus pointless lock section. > > Applied to for-next, thanks! [1/2] xfs: don't take m_sb_lock in xfs_fs_statfs commit: 72843ca62417a0587ca98791b172e4c3b3f8d3a8 [2/2] xfs: refactor xfs_fs_statfs commit: dd324cb79e54d3a61621f09c346ee050315a4d2e Best regards,
diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index 7c3f996cd39e..20cc00b992a6 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -850,11 +850,13 @@ xfs_fs_statfs( ifree = percpu_counter_sum(&mp->m_ifree); fdblocks = percpu_counter_sum(&mp->m_fdblocks); - spin_lock(&mp->m_sb_lock); statp->f_bsize = sbp->sb_blocksize; lsize = sbp->sb_logstart ? sbp->sb_logblocks : 0; + /* + * sb_dblocks can change during growfs, but nothing cares about reporting + * the old or new value during growfs. + */ statp->f_blocks = sbp->sb_dblocks - lsize; - spin_unlock(&mp->m_sb_lock); /* make sure statp->f_bfree does not underflow */ statp->f_bfree = max_t(int64_t, 0,