Toshaan Bharvani
12 months ago
commit
54b9e5b887
3 changed files with 624 additions and 0 deletions
@ -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 |
||||
|
@ -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 |
||||
|
@ -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…
Reference in new issue