rpms/xfsprogs/devel xfsprogs-3.1.0-mkfs-fixes.patch, NONE, 1.1 xfsprogs.spec, 1.71, 1.72

Eric Sandeen sandeen at fedoraproject.org
Sun Jan 17 17:46:31 UTC 2010


Author: sandeen

Update of /cvs/pkgs/rpms/xfsprogs/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv21389

Modified Files:
	xfsprogs.spec 
Added Files:
	xfsprogs-3.1.0-mkfs-fixes.patch 
Log Message:
* Sun Jan 17  2010 Eric Sandeen <sandeen at redhat.com> 3.1.0-2
- Post-release mkfs fixes (#555847)


xfsprogs-3.1.0-mkfs-fixes.patch:
 xfs_mkfs.c |   46 ++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 38 insertions(+), 8 deletions(-)

--- NEW FILE xfsprogs-3.1.0-mkfs-fixes.patch ---
From: Eric Sandeen <sandeen at sandeen.net>
Date: Fri, 15 Jan 2010 17:45:10 +0000 (-0600)
Subject: mkfs: fix mkfs sectorsize setting when blkid fails
X-Git-Url: http://git.kernel.org/?p=fs%2Fxfs%2Fxfsprogs-dev.git;a=commitdiff_plain;h=7355966f018edd0d56b47dc5d7bac7950ed49683

mkfs: fix mkfs sectorsize setting when blkid fails

When trying to mkfs something that blkid doesn't grok:

# mkfs.xfs fsfile
warning: unable to probe device toplology for device fsfile
illegal sector size 0
Usage: mkfs.xfs
...

mkfs fails.   :(

Signed-off-by: Eric Sandeen <sandeen at sandeen.net>
Reviewed-by: Alex Elder <aelder at sgi.com>
---

From: Eric Sandeen <sandeen at sandeen.net>
Date: Fri, 15 Jan 2010 19:25:20 +0000 (-0600)
Subject: mkfs: fix mkfs.xfs -dfile,name=$NAME for new files
X-Git-Url: http://git.kernel.org/?p=fs%2Fxfs%2Fxfsprogs-dev.git;a=commitdiff_plain;h=063aab8b3b597d4714fee03a657c58906900cf8e

mkfs: fix mkfs.xfs -dfile,name=$NAME for new files

# /sbin/mkfs.xfs -dfile,name=grrr,size=100g
mkfs.xfs: Use the -f option to force overwrite.

check_overwrite is failing, because  blkid_new_probe_from_filename()
is failing, because the (new) image file is 0 length.

It's easy to test for 0 length, and if found, there is
nothing to overwrite so return 0.

Also, if testing itself failed for some reason, print
a message to that effect:

# mkfs/mkfs.xfs -dfile,name=newfile,size=1g
mkfs.xfs: probe of newfile failed, cannot detect existing filesystem.
mkfs.xfs: Use the -f option to force overwrite.

Signed-off-by: Eric Sandeen <sandeen at sandeen.net>
Reviewed-by: Alex Elder <aelder at sgi.com>
---

From: Eric Sandeen <sandeen at sandeen.net>
Date: Sun, 17 Jan 2010 16:31:58 +0000 (-0600)
Subject: mkfs: get size of device properly
X-Git-Url: http://git.kernel.org/?p=fs%2Fxfs%2Fxfsprogs-dev.git;a=commitdiff_plain;h=d943b1140e566223bfd424ca4e24b3c1f3781037

mkfs: get size of device properly

Test device node size properly in check_overwrite, st_size
is only valid for regular files.

Signed-off-by: Eric Sandeen <sandeen at sandeen.net>
Reviewed-by: Christoph Hellwig <hch at lst.de>
---

Index: xfsprogs-3.1.0/mkfs/xfs_mkfs.c
===================================================================
--- xfsprogs-3.1.0.orig/mkfs/xfs_mkfs.c
+++ xfsprogs-3.1.0/mkfs/xfs_mkfs.c
@@ -283,27 +283,52 @@ calc_stripe_factors(
 }
 
 #ifdef ENABLE_BLKID
+/*
+ * Check for existing filesystem or partition table on device.
+ * Returns:
+ *	 1 for existing fs or partition
+ *	 0 for nothing found
+ *	-1 for internal error
+ */
 static int
 check_overwrite(
 	char		*device)
 {
 	const char	*type;
-	blkid_probe	pr;
-	int		ret = 0;
+	blkid_probe	pr = NULL;
+	int		ret;
+	int		fd;
+	long long	size;
+	int		bsz;
 
 	if (!device || !*device)
 		return 0;
 
+	ret = -1; /* will reset on success of all setup calls */
+
+	fd = open(device, O_RDONLY);
+	if (fd < 0)
+		goto out;
+	platform_findsizes(device, fd, &size, &bsz);
+	close(fd);
+
+	/* nothing to overwrite on a 0-length device */
+	if (size == 0) {
+		ret = 0;
+		goto out;
+	}
+
 	pr = blkid_new_probe_from_filename(device);
 	if (!pr)
-		return -1;
+		goto out;
 
 	if (blkid_probe_enable_partitions(pr, 1))
-		goto out_free_probe;
+		goto out;
 
 	if (blkid_do_fullprobe(pr))
-		goto out_free_probe;
+		goto out;
 
+	ret = 0;
 	if (!blkid_probe_lookup_value(pr, "TYPE", &type, NULL)) {
 		fprintf(stderr,
 			_("%s: %s appears to contain an existing "
@@ -316,8 +341,13 @@ check_overwrite(
 		ret = 1;
 	}
 
-out_free_probe:
-	blkid_free_probe(pr);
+out:
+	if (pr)
+		blkid_free_probe(pr);
+	if (ret == -1)
+		fprintf(stderr,
+			_("%s: probe of %s failed, cannot detect "
+			  "existing filesystem.\n"), progname, device);
 	return ret;
 }
 
@@ -1574,7 +1604,7 @@ main(
 		 * Unless specified manually on the command line use the
 		 * advertised sector size of the device.
 		 */
-		sectorsize = ft.sectorsize;
+		sectorsize = ft.sectorsize ? ft.sectorsize : XFS_MIN_SECTORSIZE;
 	}
 
 	if (ft.sectoralign || !ssflag) {


Index: xfsprogs.spec
===================================================================
RCS file: /cvs/pkgs/rpms/xfsprogs/devel/xfsprogs.spec,v
retrieving revision 1.71
retrieving revision 1.72
diff -u -p -r1.71 -r1.72
--- xfsprogs.spec	13 Jan 2010 21:21:11 -0000	1.71
+++ xfsprogs.spec	17 Jan 2010 17:46:31 -0000	1.72
@@ -1,7 +1,7 @@
 Summary:	Utilities for managing the XFS filesystem
 Name:		xfsprogs
 Version:	3.1.0
-Release:	1%{?dist}
+Release:	2%{?dist}
 # Licensing based on generic "GNU GENERAL PUBLIC LICENSE"
 # in source, with no mention of version.
 # doc/COPYING file specifies what is GPL and what is LGPL
@@ -18,8 +18,7 @@ Provides:	xfs-cmds
 Obsoletes:	xfs-cmds <= %{version}
 Conflicts:	xfsdump < 3.0.1
 
-# Fix-ups for very latest glibc header posix conformance changes
-Patch0:		xfsprogs-3.1.0-glibc-fixes.patch
+Patch0:		xfsprogs-3.1.0-mkfs-fixes.patch
 
 %description
 A set of commands to use the XFS filesystem, including mkfs.xfs.
@@ -192,9 +191,12 @@ rm -rf $RPM_BUILD_ROOT
 %{_includedir}/xfs/xfs_types.h
 
 %changelog
+* Sun Jan 17  2010 Eric Sandeen <sandeen at redhat.com> 3.1.0-2
+- Post-release mkfs fixes (#555847)
+
 * Wed Jan 13 2010 Eric Sandeen <sandeen at redhat.com> 3.1.0-1
 - New upstream release
-- Minor fixups for new glibc headers
+- Fixes default mkfs.xfs on 4k sector device (#539553)
 
 * Tue Dec 08 2009 Eric Sandeen <sandeen at redhat.com> 3.0.3-5
 - And finally, BuildRequire libblkid-devel



More information about the scm-commits mailing list