From: Darrick J. Wong Date: Thu, 24 Apr 2025 21:53:55 +0000 (-0700) Subject: mkfs: fix blkid probe API violations causing weird output X-Git-Tag: v6.15.0~46 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=044e134fffff0706f1141a8fb1d19f95641abfdf;p=thirdparty%2Fxfsprogs-dev.git mkfs: fix blkid probe API violations causing weird output The blkid_do_fullprobe function in libblkid 2.38.1 will try to read the last 512 bytes off the end of a block device. If the block device has a 2k LBA size, that read will fail. blkid_do_fullprobe passes the -EIO back to the caller (mkfs) even though the API documentation says it only returns 1, 0, or -1. Change the "cannot detect existing fs" logic to look for any negative number. Otherwise, you get unhelpful output like this: $ mkfs.xfs -l size=32m -b size=4096 /dev/loop3 mkfs.xfs: Use the -f option to force overwrite. Signed-off-by: Darrick J. Wong Reviewed-by: Christoph Hellwig --- diff --git a/libxfs/topology.c b/libxfs/topology.c index 8c6affb4..96ee74b6 100644 --- a/libxfs/topology.c +++ b/libxfs/topology.c @@ -205,7 +205,8 @@ check_overwrite( out: if (pr) blkid_free_probe(pr); - if (ret == -1) + /* libblkid 2.38.1 lies and can return -EIO */ + if (ret < 0) fprintf(stderr, _("%s: probe of %s failed, cannot detect " "existing filesystem.\n"), progname, device);