Browse Source

initial package creation

Signed-off-by: Toshaan Bharvani <toshaan@powerel.org>
master
Toshaan Bharvani 5 months ago
commit
54b9e5b887
  1. 302
      SOURCES/0001-for-next-xfsrestore-fix-rootdir-due-to-xfsdump-bulkstat-misus.patch
  2. 57
      SOURCES/0002-v3.1.13-xfsrestore-suggest-x-rather-than-assert-for-false-ro.patch
  3. 265
      SPECS/xfsdump.spec

302
SOURCES/0001-for-next-xfsrestore-fix-rootdir-due-to-xfsdump-bulkstat-misus.patch

@ -0,0 +1,302 @@ @@ -0,0 +1,302 @@
From d7cba7410710cd3ec2c2d9fafd4d93437097f473 Mon Sep 17 00:00:00 2001
From: Gao Xiang <hsiangkao@redhat.com>
Date: Wed, 28 Sep 2022 15:10:52 -0400
Subject: [PATCH] xfsrestore: fix rootdir due to xfsdump bulkstat misuse

If rootino is wrong and misspecified to a subdir inode #,
the following assertion could be triggered:
assert(ino != persp->p_rootino || hardh == persp->p_rooth);

This patch adds a '-x' option (another awkward thing is that
the codebase doesn't support long options) to address
problamatic images by searching for the real dir, the reason
that I don't enable it by default is that I'm not very confident
with the xfsrestore codebase and xfsdump bulkstat issue will
also be fixed immediately as well, so this function might be
optional and only useful for pre-exist corrupted dumps.

In details, my understanding of the original logic is
1) xfsrestore will create a rootdir node_t (p_rooth);
2) it will build the tree hierarchy from inomap and adopt
the parent if needed (so inodes whose parent ino hasn't
detected will be in the orphan dir, p_orphh);
3) during this period, if ino == rootino and
hardh != persp->p_rooth (IOWs, another node_t with
the same ino # is created), that'd be definitely wrong.

So the proposal fix is that
- considering the xfsdump root ino # is a subdir inode, it'll
trigger ino == rootino && hardh != persp->p_rooth condition;
- so we log this node_t as persp->p_rooth rather than the
initial rootdir node_t created in 1);
- we also know that this node is actually a subdir, and after
the whole inomap is scanned (IOWs, the tree is built),
the real root dir will have the orphan dir parent p_orphh;
- therefore, we walk up by the parent until some node_t has
the p_orphh, so that's it.

Cc: Donald Douwsma <ddouwsma@redhat.com>
Signed-off-by: Gao Xiang <hsiangkao@redhat.com>
Signed-off-by: Hironori Shiina <shiina.hironori@fujitsu.com>
Reviwed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
Signed-off-by: Pavel Reichl <preichl@redhat.com>
---
common/main.c | 1 +
man/man8/xfsrestore.8 | 14 +++++++++
restore/content.c | 7 +++++
restore/getopt.h | 4 +--
restore/tree.c | 72 ++++++++++++++++++++++++++++++++++++++++---
restore/tree.h | 2 ++
6 files changed, 94 insertions(+), 6 deletions(-)

diff --git a/common/main.c b/common/main.c
index 1db07d4..6141ffb 100644
--- a/common/main.c
+++ b/common/main.c
@@ -988,6 +988,7 @@ usage(void)
ULO(_("(contents only)"), GETOPT_TOC);
ULO(_("<verbosity {silent, verbose, trace}>"), GETOPT_VERBOSITY);
ULO(_("(use small tree window)"), GETOPT_SMALLWINDOW);
+ ULO(_("(try to fix rootdir due to xfsdump issue)"),GETOPT_FIXROOTDIR);
ULO(_("(don't restore extended file attributes)"), GETOPT_NOEXTATTR);
ULO(_("(restore root dir owner/permissions)"), GETOPT_ROOTPERM);
ULO(_("(restore DMAPI event settings)"), GETOPT_SETDM);
diff --git a/man/man8/xfsrestore.8 b/man/man8/xfsrestore.8
index 60e4309..df7dde0 100644
--- a/man/man8/xfsrestore.8
+++ b/man/man8/xfsrestore.8
@@ -240,6 +240,20 @@ but does not create or modify any files or directories.
It may be desirable to set the verbosity level to \f3silent\f1
when using this option.
.TP 5
+.B \-x
+This option may be useful to fix an issue which the files are restored
+to orphanage directory because of xfsdump (v3.1.7 - v3.1.9) problem.
+A normal dump cannot be restored with this option. This option works
+only for a corrupted dump.
+If a dump is created by problematic xfsdump (v3.1.7 - v3.1.9), you
+should see the contents of the dump with \f3\-t\f1 option before
+restoring. Then, if a file is placed to the orphanage directory, you need to
+use this \f3\-x\f1 option to restore the dump. Otherwise, you can restore
+the dump without this option.
+
+In the cumulative mode, this option is required only for a base (level 0)
+dump. You no longer need this option for level 1+ dumps.
+.TP 5
\f3\-v\f1 \f2verbosity\f1
.\" set inter-paragraph distance to 0
.PD 0
diff --git a/restore/content.c b/restore/content.c
index 8bb5fa4..488ae20 100644
--- a/restore/content.c
+++ b/restore/content.c
@@ -861,6 +861,7 @@ static int quotafilecheck(char *type, char *dstdir, char *quotafile);
bool_t content_media_change_needed;
bool_t restore_rootdir_permissions;
+bool_t need_fixrootdir;
char *media_change_alert_program = NULL;
size_t perssz;
@@ -958,6 +959,7 @@ content_init(int argc, char *argv[], size64_t vmsz)
stsz = 0;
interpr = BOOL_FALSE;
restore_rootdir_permissions = BOOL_FALSE;
+ need_fixrootdir = BOOL_FALSE;
optind = 1;
opterr = 0;
while ((c = getopt(argc, argv, GETOPT_CMDSTRING)) != EOF) {
@@ -1186,6 +1188,9 @@ content_init(int argc, char *argv[], size64_t vmsz)
case GETOPT_FMT2COMPAT:
tranp->t_truncategenpr = BOOL_TRUE;
break;
+ case GETOPT_FIXROOTDIR:
+ need_fixrootdir = BOOL_TRUE;
+ break;
}
}
@@ -3129,6 +3134,8 @@ applydirdump(drive_t *drivep,
return rv;
}
+ if (need_fixrootdir)
+ tree_fixroot();
persp->s.dirdonepr = BOOL_TRUE;
}
diff --git a/restore/getopt.h b/restore/getopt.h
index b5bc004..b0c0c7d 100644
--- a/restore/getopt.h
+++ b/restore/getopt.h
@@ -26,7 +26,7 @@
* purpose is to contain that command string.
*/
-#define GETOPT_CMDSTRING "a:b:c:def:himn:op:qrs:tv:wABCDEFG:H:I:JKL:M:NO:PQRS:TUVWX:Y:"
+#define GETOPT_CMDSTRING "a:b:c:def:himn:op:qrs:tv:wxABCDEFG:H:I:JKL:M:NO:PQRS:TUVWX:Y:"
#define GETOPT_WORKSPACE 'a' /* workspace dir (content.c) */
#define GETOPT_BLOCKSIZE 'b' /* blocksize for rmt */
@@ -51,7 +51,7 @@
/* 'u' */
#define GETOPT_VERBOSITY 'v' /* verbosity level (0 to 4) */
#define GETOPT_SMALLWINDOW 'w' /* use a small window for dir entries */
-/* 'x' */
+#define GETOPT_FIXROOTDIR 'x' /* try to fix rootdir due to bulkstat misuse */
/* 'y' */
/* 'z' */
#define GETOPT_NOEXTATTR 'A' /* do not restore ext. file attr. */
diff --git a/restore/tree.c b/restore/tree.c
index 5429b74..bfa07fe 100644
--- a/restore/tree.c
+++ b/restore/tree.c
@@ -15,7 +15,6 @@
* along with this program; if not, write the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
-
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
@@ -262,6 +261,7 @@ extern void usage(void);
extern size_t pgsz;
extern size_t pgmask;
extern bool_t restore_rootdir_permissions;
+extern bool_t need_fixrootdir;
/* forward declarations of locally defined static functions ******************/
@@ -328,10 +328,47 @@ static tran_t *tranp = 0;
static char *persname = PERS_NAME;
static char *orphname = ORPH_NAME;
static xfs_ino_t orphino = ORPH_INO;
+static nh_t orig_rooth = NH_NULL;
/* definition of locally defined global functions ****************************/
+void
+tree_fixroot(void)
+{
+ nh_t rooth = persp->p_rooth;
+ xfs_ino_t rootino;
+
+ while (1) {
+ nh_t parh;
+ node_t *rootp = Node_map(rooth);
+
+ rootino = rootp->n_ino;
+ parh = rootp->n_parh;
+ Node_unmap(rooth, &rootp);
+
+ if (parh == rooth ||
+ /*
+ * since all new node (including non-parent)
+ * would be adopted into orphh
+ */
+ parh == persp->p_orphh ||
+ parh == NH_NULL)
+ break;
+ rooth = parh;
+ }
+
+ if (rooth != persp->p_rooth) {
+ persp->p_rooth = rooth;
+ persp->p_rootino = rootino;
+ disown(rooth);
+ adopt(persp->p_rooth, persp->p_orphh, NH_NULL);
+
+ mlog(MLOG_NORMAL, _("fix root # to %llu (bind mount?)\n"),
+ rootino);
+ }
+}
+
/* ARGSUSED */
bool_t
tree_init(char *hkdir,
@@ -746,7 +783,8 @@ tree_begindir(filehdr_t *fhdrp, dah_t *dahp)
/* lookup head of hardlink list
*/
hardh = link_hardh(ino, gen);
- assert(ino != persp->p_rootino || hardh == persp->p_rooth);
+ if (need_fixrootdir == BOOL_FALSE)
+ assert(ino != persp->p_rootino || hardh == persp->p_rooth);
/* already present
*/
@@ -815,7 +853,6 @@ tree_begindir(filehdr_t *fhdrp, dah_t *dahp)
adopt(persp->p_orphh, hardh, NRH_NULL);
*dahp = dah;
}
-
return hardh;
}
@@ -960,6 +997,7 @@ tree_addent(nh_t parh, xfs_ino_t ino, gen_t gen, char *name, size_t namelen)
}
} else {
assert(hardp->n_nrh != NRH_NULL);
+
namebuflen
=
namreg_get(hardp->n_nrh,
@@ -1110,6 +1148,13 @@ tree_addent(nh_t parh, xfs_ino_t ino, gen_t gen, char *name, size_t namelen)
ino,
gen);
}
+ /* found the fake rootino from subdir, need fix p_rooth. */
+ if (need_fixrootdir == BOOL_TRUE &&
+ persp->p_rootino == ino && hardh != persp->p_rooth) {
+ mlog(MLOG_NORMAL,
+ _("found fake rootino #%llu, will fix.\n"), ino);
+ persp->p_rooth = hardh;
+ }
return RV_OK;
}
@@ -3808,7 +3853,26 @@ selsubtree_recurse_down(nh_t nh, bool_t sensepr)
static nh_t
link_hardh(xfs_ino_t ino, gen_t gen)
{
- return hash_find(ino, gen);
+ nh_t tmp = hash_find(ino, gen);
+
+ /*
+ * XXX (another workaround): the simply way is that don't reuse node_t
+ * with gen = 0 created in tree_init(). Otherwise, it could cause
+ * xfsrestore: tree.c:1003: tree_addent: Assertion
+ * `hardp->n_nrh != NRH_NULL' failed.
+ * and that node_t is a dir node but the fake rootino could be a non-dir
+ * plus reusing it could cause potential loop in tree hierarchy.
+ */
+ if (need_fixrootdir == BOOL_TRUE &&
+ ino == persp->p_rootino && gen == 0 &&
+ orig_rooth == NH_NULL) {
+ mlog(MLOG_NORMAL,
+_("link out fake rootino %llu with gen=0 created in tree_init()\n"), ino);
+ link_out(tmp);
+ orig_rooth = tmp;
+ return NH_NULL;
+ }
+ return tmp;
}
/* returns following node in hard link list
diff --git a/restore/tree.h b/restore/tree.h
index bf66e3d..f5bd4ff 100644
--- a/restore/tree.h
+++ b/restore/tree.h
@@ -18,6 +18,8 @@
#ifndef TREE_H
#define TREE_H
+void tree_fixroot(void);
+
/* tree_init - creates a new tree abstraction.
*/
extern bool_t tree_init(char *hkdir,
--
2.41.0

57
SOURCES/0002-v3.1.13-xfsrestore-suggest-x-rather-than-assert-for-false-ro.patch

@ -0,0 +1,57 @@ @@ -0,0 +1,57 @@
From 8e97f9c2b3c362fa6dd872d72594713c713479bc Mon Sep 17 00:00:00 2001
From: Donald Douwsma <ddouwsma@redhat.com>
Date: Thu, 24 Aug 2023 12:07:04 +1000
Subject: [PATCH] xfsrestore: suggest -x rather than assert for false roots

If we're going to have a fix for false root problems its a good idea to
let people know that there's a way to recover, error out with a useful
message that mentions the `-x` option rather than just assert.

Before

xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsrestore: tree.c:757: tree_begindir: Assertion `ino != persp->p_rootino || hardh == persp->p_rooth' failed.
Aborted

After

xfsrestore: ERROR: tree.c:791: tree_begindir: Assertion `ino != persp->p_rootino || hardh == persp->p_rooth` failed.
xfsrestore: ERROR: False root detected. Recovery may be possible using the `-x` option
Aborted

Fixes: d7cba7410710 ("xfsrestore: fix rootdir due to xfsdump bulkstat misuse")
Signed-off-by: Donald Douwsma <ddouwsma@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
Signed-off-by: Pavel Reichl <preichl@redhat.com>
---
restore/tree.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/restore/tree.c b/restore/tree.c
index bfa07fe..6f3180f 100644
--- a/restore/tree.c
+++ b/restore/tree.c
@@ -783,8 +783,15 @@ tree_begindir(filehdr_t *fhdrp, dah_t *dahp)
/* lookup head of hardlink list
*/
hardh = link_hardh(ino, gen);
- if (need_fixrootdir == BOOL_FALSE)
- assert(ino != persp->p_rootino || hardh == persp->p_rooth);
+ if (need_fixrootdir == BOOL_FALSE &&
+ !(ino != persp->p_rootino || hardh == persp->p_rooth)) {
+ mlog(MLOG_ERROR | MLOG_TREE,
+"%s:%d: %s: Assertion `ino != persp->p_rootino || hardh == persp->p_rooth` failed.\n",
+ __FILE__, __LINE__, __func__);
+ mlog(MLOG_ERROR | MLOG_TREE, _(
+"False root detected. Recovery may be possible using the `-x` option\n"));
+ return NH_NULL;
+ }
/* already present
*/
--
2.41.0

265
SPECS/xfsdump.spec

@ -0,0 +1,265 @@ @@ -0,0 +1,265 @@
Summary: Backup and restore utilities for the XFS filesystem
Name: xfsdump
Version: 3.1.12
Release: 4%{?dist}
# Licensing based on generic "GNU GENERAL PUBLIC LICENSE"
# in source, with no mention of version.
License: GPL+
Source0: http://kernel.org/pub/linux/utils/fs/xfs/%{name}/%{name}-%{version}.tar.xz
Source1: http://kernel.org/pub/linux/utils/fs/xfs/%{name}/%{name}-%{version}.tar.sign
Source2: https://git.kernel.org/pub/scm/docs/kernel/pgpkeys.git/plain/keys/13F703E6C11CF6F0.asc
BuildRequires: make
BuildRequires: gcc
BuildRequires: libtool, gettext, gawk
BuildRequires: xfsprogs-devel, libuuid-devel, libattr-devel ncurses-devel
BuildRequires: gnupg2, xz
Requires: xfsprogs >= 2.6.30, attr >= 2.0.0

Patch0: 0001-for-next-xfsrestore-fix-rootdir-due-to-xfsdump-bulkstat-misus.patch
Patch1: 0002-v3.1.13-xfsrestore-suggest-x-rather-than-assert-for-false-ro.patch

%description
The xfsdump package contains xfsdump, xfsrestore and a number of
other utilities for administering XFS filesystems.

xfsdump examines files in a filesystem, determines which need to be
backed up, and copies those files to a specified disk, tape or other
storage medium. It uses XFS-specific directives for optimizing the
dump of an XFS filesystem, and also knows how to backup XFS extended
attributes. Backups created with xfsdump are "endian safe" and can
thus be transfered between Linux machines of different architectures
and also between IRIX machines.

xfsrestore performs the inverse function of xfsdump; it can restore a
full backup of a filesystem. Subsequent incremental backups can then
be layered on top of the full backup. Single files and directory
subtrees may be restored from full or partial backups.

%prep
xzcat '%{SOURCE0}' | %{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data=-
%autosetup -p1

%build
%configure

make V=1 %{?_smp_mflags}

%install
rm -rf $RPM_BUILD_ROOT
make DIST_ROOT=$RPM_BUILD_ROOT install
# remove non-versioned docs location
rm -rf $RPM_BUILD_ROOT/%{_datadir}/doc/xfsdump/

# Bit of a hack to move files from /sbin to /usr/sbin
(cd $RPM_BUILD_ROOT/%{_sbindir}; mv ../../sbin/xfsdump .)
(cd $RPM_BUILD_ROOT/%{_sbindir}; mv ../../sbin/xfsrestore .)

# Create inventory dir (otherwise created @ runtime)
mkdir -p $RPM_BUILD_ROOT/%{_sharedstatedir}/xfsdump/inventory

%find_lang %{name}

%files -f %{name}.lang
%doc README doc/COPYING doc/CHANGES doc/README.xfsdump doc/xfsdump_ts.txt
%{_mandir}/man8/*
%{_sbindir}/*
%{_sharedstatedir}/xfsdump/inventory

%changelog
* Fri Oct 26 2023 Pavel Reichl <preichl@redhat.com> - 3.1.12-4
- xfsdump/xfsrestore: suggest recovery for false roots may be possible using -x
- Related: RHEL-14038

* Mon Jun 26 2023 Pavel Reichl <preichl@redhat.com> - 3.1.12-3
- xfsdump: restoring inventory prevents non-directory files being restored from tape,
- actually fixed by rebase to 3.1.12
- related: bz#2166557
- xfsrestore: Files from the backup go to orphanage dir because of xfsdump issue
- related: bz#2034327

* Tue Apr 18 2023 Pavel Reichl <preichl@redhat.com> - 3.1.12-2
- rebuilt, Fix wrongly associated bugzilla
Related: rhbz#2181660

* Mon Apr 17 2023 Pavel Reichl <preichl@redhat.com> - 3.1.12-1
- New upstream release
- Use Cem's pgp key instead of Eric's
Related: rhbz#2181660

* Fri Feb 11 2022 Eric Sandeen <sandeen@redhat.com> 3.1.10-1
- New upstream release
- Resolve issue with bind mounts / root inode mismatch (#2034324)

* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 3.1.9-6
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688

* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 3.1.9-5
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937

* Thu Jan 28 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.9-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild

* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.9-3
- Second attempt - Rebuilt for
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild

* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.9-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild

* Fri Jan 31 2020 Eric Sandeen <sandeen@redhat.com> 3.1.9-1
- New upstream release

* Fri Jan 31 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.8-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild

* Sat Jul 27 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.8-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild

* Sun Feb 03 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.8-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild

* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.8-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild

* Mon Feb 26 2018 Eric Sandeen <sandeen@redhat.com> 3.1.8-3
- BuildRequires: gcc

* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.8-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild

* Thu Sep 21 2017 Eric Sandeen <sandeen@redhat.com> 3.1.8-1
- New upstream release

* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.6-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild

* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.6-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild

* Thu Jun 08 2017 Eric Sandeen <sandeen@redhat.com> 3.1.6-4
- Build with largefile support on 32-bit platforms

* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.6-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild

* Fri Feb 05 2016 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.6-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild

* Tue Nov 10 2015 Eric Sandeen <sandeen@redhat.com> 3.1.6-1
- New upstream release

* Fri Jun 19 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1.4-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild

* Mon Aug 18 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild

* Thu Jul 17 2014 Eric Sandeen <sandeen@redhat.com> 3.1.4-1
- New upstream release

* Mon Jun 16 2014 Eric Sandeen <sandeen@redhat.com> 3.1.3-5
- Fix aarch64 build (#926800)

* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1.3-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild

* Mon Jan 20 2014 Eric Sandeen <sandeen@redhat.com> 3.1.3-3
- Add /var/lib/xfsdump/inventory to file list (was created runtime)

* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild

* Wed May 08 2013 Eric Sandeen <sandeen@redhat.com> 3.1.3-1
- New upstream release

* Fri Feb 15 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild

* Thu Dec 13 2012 Eric Sandeen <sandeen@redhat.com> 3.1.2-1
- New upstream release, with non-broken tarball

* Thu Dec 13 2012 Eric Sandeen <sandeen@redhat.com> 3.1.1-1
- New upstream release

* Sun Jul 22 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild

* Wed Mar 28 2012 Eric Sandeen <sandeen@redhat.com> 3.1.0-2
- Move files out of /sbin to /usr/sbin

* Fri Mar 23 2012 Eric Sandeen <sandeen@redhat.com> 3.1.0-1
- New upstream release

* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0.6-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild

* Mon Oct 17 2011 Eric Sandeen <sandeen@redhat.com> 3.0.6-1
- New upstream release

* Thu Mar 31 2011 Eric Sandeen <sandeen@redhat.com> 3.0.5-1
- New upstream release

* Mon Feb 07 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild

* Wed Jan 13 2010 Eric Sandeen <sandeen@redhat.com> 3.0.4-1
- New upstream release

* Mon Nov 30 2009 Dennis Gregorovic <dgregor@redhat.com> - 3.0.1-3.1
- Rebuilt for RHEL 6

* Mon Jul 27 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild

* Tue Jun 30 2009 Eric Sandeen <sandeen@redhat.com> 3.0.1-2
- Fix up build-requires after e2fsprogs splitup

* Tue May 05 2009 Eric Sandeen <sandeen@redhat.com> 3.0.1-1
- New upstream release

* Thu Feb 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild

* Wed Feb 04 2009 Eric Sandeen <sandeen@redhat.com> 3.0.0-1
- New upstream release

* Wed Nov 12 2008 Eric Sandeen <sandeen@redhat.com> 2.2.48-2
- Enable parallel builds

* Sun Feb 10 2008 Eric Sandeen <sandeen@redhat.com> - 2.2.48-1
- Update to xfsdump version 2.2.48
- First build with gcc-4.3

* Mon Sep 10 2007 Eric Sandeen <sandeen@redhat.com> - 2.2.46-1
- Update to xfsdump version 2.2.46
- Dropped O_CREAT patch, now upstream

* Fri Aug 24 2007 Eric Sandeen <sandeen@redhat.com> - 2.2.45-3
- Update license tag
- Fix up O_CREAT opens with no mode
- Add gawk to buildrequires

* Tue Jun 19 2007 Eric Sandeen <sandeen@redhat.com> - 2.2.45-2
- Remove readline-devel & libtermcap-devel BuildRequires

* Thu May 31 2007 Eric Sandeen <sandeen@redhat.com> - 2.2.45-1
- Update to xfsdump 2.2.45

* Thu Aug 31 2006 Russell Cattelan <cattelan@thebarn.com> - 2.2.42-2
- Remove Distribution: tag

* Wed Aug 23 2006 Russell Cattelan <cattelan@thebarn.com> - 2.2.42-1
- update to version 2.2.42

* Tue Aug 22 2006 Russell Cattelan <cattelan@thebarn.com> - 2.2.38-3
- Fix the /usr/sbin sym links to relative links
- Add the Distribution tag
- Add ncurses-devel to buildrequires

* Wed Aug 16 2006 Russell Cattelan <cattelan@thebarn.com> - 2.2.38-2
- install removes the makefile installed version of the docs
package the docs based in the version specfic directory
* Wed Aug 9 2006 Russell Cattelan <cattelan@thebarn.com> - 2.2.38-1
- Add xfsdump to Fedora
Loading…
Cancel
Save