]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
xfs: use blkdev_report_zones_cached()
authorDamien Le Moal <dlemoal@kernel.org>
Tue, 4 Nov 2025 21:22:49 +0000 (06:22 +0900)
committerJens Axboe <axboe@kernel.dk>
Wed, 5 Nov 2025 15:07:21 +0000 (08:07 -0700)
Modify xfs_mount_zones() to replace the call to blkdev_report_zones()
with blkdev_report_zones_cached() to speed-up mount operations.
Since this causes xfs_zone_validate_seq() to see zones with the
BLK_ZONE_COND_ACTIVE condition, this function is also modified to acept
this condition as valid.

With this change, mounting a freshly formatted large capacity (30 TB)
SMR HDD completes under 2s compared to over 4.7s before.

Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/xfs/libxfs/xfs_zones.c
fs/xfs/xfs_zone_alloc.c

index b0791a71931c9317ab399f787ccadacaa958e314..b40f71f878b5483fa8ac8d24fc721bc03da512a9 100644 (file)
@@ -95,6 +95,7 @@ xfs_zone_validate_seq(
        case BLK_ZONE_COND_IMP_OPEN:
        case BLK_ZONE_COND_EXP_OPEN:
        case BLK_ZONE_COND_CLOSED:
+       case BLK_ZONE_COND_ACTIVE:
                return xfs_zone_validate_wp(zone, rtg, write_pointer);
        case BLK_ZONE_COND_FULL:
                return xfs_zone_validate_full(zone, rtg, write_pointer);
index 1147bacb2da8e6b85910fd35d11c2ca5b06abf3a..d121768dbccb1b1b29b969b42c59a5fc28b8db4d 100644 (file)
@@ -1250,7 +1250,7 @@ xfs_mount_zones(
        trace_xfs_zones_mount(mp);
 
        if (bdev_is_zoned(bt->bt_bdev)) {
-               error = blkdev_report_zones(bt->bt_bdev,
+               error = blkdev_report_zones_cached(bt->bt_bdev,
                                XFS_FSB_TO_BB(mp, mp->m_sb.sb_rtstart),
                                mp->m_sb.sb_rgcount, xfs_get_zone_info_cb, &iz);
                if (error < 0)