* Fri May 07 2010 Eric Sandeen <sandeen@redhat.com> 3.1.2-1

- New upstream release
This commit is contained in:
Eric Sandeen 2010-05-07 22:09:56 +00:00
parent 8dc5a86ad0
commit 0765fcbe34
7 changed files with 7 additions and 273 deletions

View File

@ -1 +1 @@
xfsprogs-3.1.1.tar.gz
xfsprogs-3.1.2.tar.gz

View File

@ -1 +1 @@
c2308b46ee707597ac50aae418d321b8 xfsprogs-3.1.1.tar.gz
86d10178ee6897cb099c97303e6d9da0 xfsprogs-3.1.2.tar.gz

View File

@ -1,50 +0,0 @@
From: Eric Sandeen <sandeen@sandeen.net>
Date: Mon, 1 Feb 2010 16:13:36 +0000 (-0600)
Subject: xfsprogs: fix build with latest glibc headers
X-Git-Url: http://git.kernel.org/?p=fs%2Fxfs%2Fxfsprogs-dev.git;a=commitdiff_plain;h=66210ef2f6aa5821a4c9cebc28414a265ee16019
xfsprogs: fix build with latest glibc headers
glibc in rawhide has some changes...
* Tue Jan 12 2010 Andreas Schwab <schwab@redhat.com> - 2.11.90-8
- Update from master.
- More POSIX conformance fixes.
* Mon Jan 11 2010 Andreas Schwab <schwab@redhat.com> - 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 <sandeen@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
---
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 <sys/ioctl.h>
#include <sys/param.h>
#include <sys/sysmacros.h>
+#include <sys/stat.h>
#include <malloc.h>
#include <getopt.h>
#include <endian.h>

View File

@ -1,108 +0,0 @@
From: Dave Chinner <dchinner@redhat.com>
Date: Sun, 14 Mar 2010 22:52:08 +0000 (+1100)
Subject: xfsprogs: duplicate extent btrees in xfs_repair need locking
X-Git-Url: http://git.kernel.org/?p=fs%2Fxfs%2Fxfsprogs-dev.git;a=commitdiff_plain;h=853a75b3b30b0556fb5f100d4087f1ce46769bd1
xfsprogs: duplicate extent btrees in xfs_repair need locking
The per-ag duplicate extent btrees can be search concurrently from multiple
threads. This occurs when inode extent lists are being processed and inodes
with extents in the same AG are checked concurrently. The btrees have an
internal traversal cursor, so doing concurrent searches can result in the
cursor being corrupted for both searches.
Add an external lock for each duplicate extent tree and use it for searches,
inserts and deletes to ensure that we don't trash the state of any operation.
Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
---
diff --git a/repair/incore_ext.c b/repair/incore_ext.c
index a362e5a..60dd4c4 100644
--- a/repair/incore_ext.c
+++ b/repair/incore_ext.c
@@ -74,6 +74,7 @@ static rt_ext_flist_t rt_ext_flist;
static avl64tree_desc_t *rt_ext_tree_ptr; /* dup extent tree for rt */
static struct btree_root **dup_extent_trees; /* per ag dup extent trees */
+static pthread_mutex_t *dup_extent_tree_locks;
static avltree_desc_t **extent_bno_ptrs; /*
* array of extent tree ptrs
@@ -108,7 +109,9 @@ void
release_dup_extent_tree(
xfs_agnumber_t agno)
{
+ pthread_mutex_lock(&dup_extent_tree_locks[agno]);
btree_clear(dup_extent_trees[agno]);
+ pthread_mutex_unlock(&dup_extent_tree_locks[agno]);
}
int
@@ -117,12 +120,16 @@ add_dup_extent(
xfs_agblock_t startblock,
xfs_extlen_t blockcount)
{
+ int ret;
#ifdef XR_DUP_TRACE
fprintf(stderr, "Adding dup extent - %d/%d %d\n", agno, startblock,
blockcount);
#endif
- return btree_insert(dup_extent_trees[agno], startblock,
+ pthread_mutex_lock(&dup_extent_tree_locks[agno]);
+ ret = btree_insert(dup_extent_trees[agno], startblock,
(void *)(uintptr_t)(startblock + blockcount));
+ pthread_mutex_unlock(&dup_extent_tree_locks[agno]);
+ return ret;
}
int
@@ -132,13 +139,22 @@ search_dup_extent(
xfs_agblock_t end_agbno)
{
unsigned long bno;
+ int ret;
- if (!btree_find(dup_extent_trees[agno], start_agbno, &bno))
- return 0; /* this really shouldn't happen */
- if (bno < end_agbno)
- return 1;
- return (uintptr_t)btree_peek_prev(dup_extent_trees[agno], NULL) >
+ pthread_mutex_lock(&dup_extent_tree_locks[agno]);
+ if (!btree_find(dup_extent_trees[agno], start_agbno, &bno)) {
+ ret = 0;
+ goto out; /* this really shouldn't happen */
+ }
+ if (bno < end_agbno) {
+ ret = 1;
+ goto out;
+ }
+ ret = (uintptr_t)btree_peek_prev(dup_extent_trees[agno], NULL) >
start_agbno;
+out:
+ pthread_mutex_unlock(&dup_extent_tree_locks[agno]);
+ return ret;
}
@@ -856,6 +872,10 @@ incore_ext_init(xfs_mount_t *mp)
if (!dup_extent_trees)
do_error(_("couldn't malloc dup extent tree descriptor table\n"));
+ dup_extent_tree_locks = calloc(agcount, sizeof(pthread_mutex_t));
+ if (!dup_extent_tree_locks)
+ do_error(_("couldn't malloc dup extent tree descriptor table\n"));
+
if ((extent_bno_ptrs = malloc(agcount *
sizeof(avltree_desc_t *))) == NULL)
do_error(
@@ -879,6 +899,7 @@ incore_ext_init(xfs_mount_t *mp)
for (i = 0; i < agcount; i++) {
btree_init(&dup_extent_trees[i]);
+ pthread_mutex_init(&dup_extent_tree_locks[i], NULL);
avl_init_tree(extent_bno_ptrs[i], &avl_extent_tree_ops);
avl_init_tree(extent_bcnt_ptrs[i], &avl_extent_bcnt_tree_ops);
}

View File

@ -1,73 +0,0 @@
From: Christoph Hellwig <hch@lst.de>
Date: Fri, 5 Feb 2010 07:52:52 +0000 (+0100)
Subject: mkfs.xfs: fix detection of empty devices
X-Git-Url: http://git.kernel.org/?p=fs%2Fxfs%2Fxfsprogs-dev.git;a=commitdiff_plain;h=c2b707cf506c83ad4ab38c97c11cf358cc0bec88
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 <hch@lst.de>
Reviewed-by: Eric Sandeen <sandeen@sandeen.net>
---
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)

View File

@ -1,28 +0,0 @@
From: Christoph Hellwig <hch@lst.de>
Date: Sun, 31 Jan 2010 08:57:46 +0000 (+0100)
Subject: mkfs.xfs: fix fd validity check in get_topology
X-Git-Url: http://git.kernel.org/?p=fs%2Fxfs%2Fxfsprogs-dev.git;a=commitdiff_plain;h=85112c3a23927f299f04c193f5924249d7dd80bf
mkfs.xfs: fix fd validity check in get_topology
Only negatie return values from open mean we failed to open the device.
Without this check we do not print the usage message when no device is
specified. This leads to a weird failure in xfstests 122.
Reviewed-by: Eric Sandeen <sandeen@sandeen.ent>
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
Index: xfsprogs-dev/mkfs/xfs_mkfs.c
===================================================================
--- xfsprogs-dev.orig/mkfs/xfs_mkfs.c 2010-01-30 20:44:03.505255109 +0100
+++ xfsprogs-dev/mkfs/xfs_mkfs.c 2010-01-30 20:44:20.579255807 +0100
@@ -455,7 +455,7 @@ static void get_topology(libxfs_init_t *
&ft->dsunit, &ft->dswidth, &ft->sectoralign);
fd = open(dfile, O_RDONLY);
/* If this fails we just fall back to BBSIZE */
- if (fd) {
+ if (fd >= 0) {
platform_findsizes(dfile, fd, &dummy, &bsz);
close(fd);
}

View File

@ -1,7 +1,7 @@
Summary: Utilities for managing the XFS filesystem
Name: xfsprogs
Version: 3.1.1
Release: 7%{?dist}
Version: 3.1.2
Release: 1%{?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,11 +18,6 @@ Provides: xfs-cmds
Obsoletes: xfs-cmds <= %{version}
Conflicts: xfsdump < 3.0.1
Patch0: xfsprogs-3.1.0-glibc-fixes.patch
Patch1: xfsprogs-3.1.1-fd-test-fix.patch
Patch2: xfsprogs-3.1.1-empty-blkid-fix.patch
Patch3: xfsprogs-3.1.1-btree-locking.patch
%description
A set of commands to use the XFS filesystem, including mkfs.xfs.
@ -66,11 +61,6 @@ in building or running the xfstests QA suite.
%prep
%setup -q
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%build
export tagname=CC DEBUG=-DNDEBUG
%configure \
@ -195,6 +185,9 @@ rm -rf $RPM_BUILD_ROOT
%{_includedir}/xfs/xfs_types.h
%changelog
* Fri May 07 2010 Eric Sandeen <sandeen@redhat.com> 3.1.2-1
- New upstream release
* Thu Apr 01 2010 Eric Sandeen <sandeen@redhat.com> 3.1.1-7
- make devel pkg require libuuid-devel (#576296)