From: Christoph Hellwig Date: Mon, 22 Jul 2024 13:31:28 +0000 (-0700) Subject: xfs: support xrep_require_rtext_inuse on zoned file systems X-Git-Tag: v6.15-rc1~149^2~7^2~5^2~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=14d355dceca26a28b6c95759fc9a3645f5ec2f8d;p=thirdparty%2Flinux.git xfs: support xrep_require_rtext_inuse on zoned file systems Space usage is tracked by the rmap, which already is separately cross-referenced. But on top of that we have the write pointer and can do a basic sanity check here that the block is not beyond the write pointer. Signed-off-by: Christoph Hellwig Reviewed-by: "Darrick J. Wong" --- diff --git a/fs/xfs/scrub/repair.c b/fs/xfs/scrub/repair.c index c2705c3cba0d7..f8f9ed30f56b0 100644 --- a/fs/xfs/scrub/repair.c +++ b/fs/xfs/scrub/repair.c @@ -43,6 +43,7 @@ #include "xfs_rtalloc.h" #include "xfs_metafile.h" #include "xfs_rtrefcount_btree.h" +#include "xfs_zone_alloc.h" #include "scrub/scrub.h" #include "scrub/common.h" #include "scrub/trace.h" @@ -1050,7 +1051,13 @@ xrep_require_rtext_inuse( xfs_rtxnum_t startrtx; xfs_rtxnum_t endrtx; bool is_free = false; - int error; + int error = 0; + + if (xfs_has_zoned(mp)) { + if (!xfs_zone_rgbno_is_valid(sc->sr.rtg, rgbno + len - 1)) + return -EFSCORRUPTED; + return 0; + } startrtx = xfs_rgbno_to_rtx(mp, rgbno); endrtx = xfs_rgbno_to_rtx(mp, rgbno + len - 1);