]> www.infradead.org Git - users/hch/misc.git/commitdiff
xfs: simplify sector number calculation in xfs_zero_extent
authorChristoph Hellwig <hch@lst.de>
Thu, 31 Oct 2024 13:08:35 +0000 (14:08 +0100)
committerCarlos Maiolino <cem@kernel.org>
Tue, 5 Nov 2024 12:51:59 +0000 (13:51 +0100)
xfs_zero_extent does some really odd gymnstics to calculate the block
layer sectors numbers passed to blkdev_issue_zeroout.  This is because it
used to call sb_issue_zeroout and the calculations in that helper got
open coded here in the rather misleadingly named commit 3dc29161070a
("dax: use sb_issue_zerout instead of calling dax_clear_sectors").

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
fs/xfs/xfs_bmap_util.c

index 4719ec90029cb713c5c894128192760728925a04..14d801bacb76f4ec7159f0a37a56b0a0c756b335 100644 (file)
@@ -47,10 +47,6 @@ xfs_fsb_to_db(struct xfs_inode *ip, xfs_fsblock_t fsb)
 
 /*
  * Routine to zero an extent on disk allocated to the specific inode.
- *
- * The VFS functions take a linearised filesystem block offset, so we have to
- * convert the sparse xfs fsb to the right format first.
- * VFS types are real funky, too.
  */
 int
 xfs_zero_extent(
@@ -58,15 +54,10 @@ xfs_zero_extent(
        xfs_fsblock_t           start_fsb,
        xfs_off_t               count_fsb)
 {
-       struct xfs_mount        *mp = ip->i_mount;
-       struct xfs_buftarg      *target = xfs_inode_buftarg(ip);
-       xfs_daddr_t             sector = xfs_fsb_to_db(ip, start_fsb);
-       sector_t                block = XFS_BB_TO_FSBT(mp, sector);
-
-       return blkdev_issue_zeroout(target->bt_bdev,
-               block << (mp->m_super->s_blocksize_bits - 9),
-               count_fsb << (mp->m_super->s_blocksize_bits - 9),
-               GFP_KERNEL, 0);
+       return blkdev_issue_zeroout(xfs_inode_buftarg(ip)->bt_bdev,
+                       xfs_fsb_to_db(ip, start_fsb),
+                       XFS_FSB_TO_BB(ip->i_mount, count_fsb),
+                       GFP_KERNEL, 0);
 }
 
 /*