commit c2b707cf506c83ad4ab38c97c11cf358cc0bec88 Author: Christoph Hellwig Date: Fri Feb 5 08:52:52 2010 +0100 mkfs.xfs: fix detection of empty devices We currently fail to detect that a device does indeed not contain any signature and we are indeed fine to proceed with it due to mishandling the return value of blkid_do_fullprobe. Fix that up and add some better diagnostics of the blkid detection. from RH bugzilla https://bugzilla.redhat.com/show_bug.cgi?id=561870 # dd if=/dev/zero of=k bs=1MB count=2 seek=20; mkfs.xfs k # mkfs.xfs: probe of k failed, cannot detect existing filesystem. # mkfs.xfs: Use the -f option to force overwrite Signed-off-by: Christoph Hellwig Reviewed-by: Eric Sandeen diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index 9baf116..2d09e36 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -322,24 +322,40 @@ check_overwrite( if (!pr) goto out; - if (blkid_probe_enable_partitions(pr, 1)) + ret = blkid_probe_enable_partitions(pr, 1); + if (ret < 0) goto out; - if (blkid_do_fullprobe(pr)) + ret = blkid_do_fullprobe(pr); + if (ret < 0) goto out; - ret = 0; + /* + * Blkid returns 1 for nothing found and 0 when it finds a signature, + * but we want the exact opposite, so reverse the return value here. + * + * In addition print some useful diagnostics about what actually is + * on the device. + */ + if (ret) { + ret = 0; + goto out; + } + if (!blkid_probe_lookup_value(pr, "TYPE", &type, NULL)) { fprintf(stderr, _("%s: %s appears to contain an existing " "filesystem (%s).\n"), progname, device, type); - ret = 1; } else if (!blkid_probe_lookup_value(pr, "PTTYPE", &type, NULL)) { fprintf(stderr, _("%s: %s appears to contain a partition " "table (%s).\n"), progname, device, type); - ret = 1; + } else { + fprintf(stderr, + _("%s: %s appears to contain something weird " + "according to blkid\n"), progname, device); } + ret = 1; out: if (pr) commit 66210ef2f6aa5821a4c9cebc28414a265ee16019 Author: Eric Sandeen Date: Mon Feb 1 10:13:36 2010 -0600 xfsprogs: fix build with latest glibc headers glibc in rawhide has some changes... * Tue Jan 12 2010 Andreas Schwab - 2.11.90-8 - Update from master. - More POSIX conformance fixes. * Mon Jan 11 2010 Andreas Schwab - 2.11.90-6 - Update from master. - POSIX conformance fixes (BZ#11125). which seem to break the xfsprogs build. I'm no feature test macro guru, but the following gets it going again for me. Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig diff --git a/include/builddefs.in b/include/builddefs.in index ca8f172..cc75b5d 100644 --- a/include/builddefs.in +++ b/include/builddefs.in @@ -102,7 +102,7 @@ GCCFLAGS = -funsigned-char -fno-strict-aliasing -Wall # -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-decl ifeq ($(PKG_PLATFORM),linux) -PCFLAGS = -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 $(GCCFLAGS) +PCFLAGS = -D_GNU_SOURCE -D_XOPEN_SOURCE=500 -D_FILE_OFFSET_BITS=64 $(GCCFLAGS) DEPENDFLAGS = -D__linux__ endif ifeq ($(PKG_PLATFORM),darwin) diff --git a/include/linux.h b/include/linux.h index dbfb4cf..b342e55 100644 --- a/include/linux.h +++ b/include/linux.h @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include