]> www.infradead.org Git - users/hch/xfs.git/commitdiff
xfs: simplify sector number calculation in xfs_zero_extent
authorChristoph Hellwig <hch@lst.de>
Tue, 30 Jul 2024 23:15:43 +0000 (16:15 -0700)
committerChristoph Hellwig <hch@lst.de>
Tue, 5 Nov 2024 08:29:49 +0000 (09:29 +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>
fs/xfs/xfs_bmap_util.c

index 1fe676710394e1d5cab48d3409cc60e856679502..a59bbe767a7dc42018adcec61e83836dfe03a4e9 100644 (file)
@@ -48,10 +48,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(
@@ -59,15 +55,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);
 }
 
 /*