Compare commits
No commits in common. "c8" and "c9" have entirely different histories.
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
|||||||
SOURCES/xfsdump-3.1.8.tar.xz
|
SOURCES/xfsdump-3.1.12.tar.xz
|
||||||
|
@ -1 +1 @@
|
|||||||
34fd97ecd92ced92e9c51c8c0ff37dabf627aefb SOURCES/xfsdump-3.1.8.tar.xz
|
20753a3244bd9470bc39fc8477ba9a33f2bdac75 SOURCES/xfsdump-3.1.12.tar.xz
|
||||||
|
@ -54,14 +54,14 @@ diff --git a/common/main.c b/common/main.c
|
|||||||
index 1db07d4..6141ffb 100644
|
index 1db07d4..6141ffb 100644
|
||||||
--- a/common/main.c
|
--- a/common/main.c
|
||||||
+++ b/common/main.c
|
+++ b/common/main.c
|
||||||
@@ -984,6 +984,7 @@
|
@@ -988,6 +988,7 @@ usage(void)
|
||||||
ULO(_("(contents only)"), GETOPT_TOC );
|
ULO(_("(contents only)"), GETOPT_TOC);
|
||||||
ULO(_("<verbosity {silent, verbose, trace}>"), GETOPT_VERBOSITY );
|
ULO(_("<verbosity {silent, verbose, trace}>"), GETOPT_VERBOSITY);
|
||||||
ULO(_("(use small tree window)"), GETOPT_SMALLWINDOW );
|
ULO(_("(use small tree window)"), GETOPT_SMALLWINDOW);
|
||||||
+ ULO(_("(try to fix rootdir due to xfsdump issue)"),GETOPT_FIXROOTDIR);
|
+ ULO(_("(try to fix rootdir due to xfsdump issue)"),GETOPT_FIXROOTDIR);
|
||||||
ULO(_("(don't restore extended file attributes)"),GETOPT_NOEXTATTR );
|
ULO(_("(don't restore extended file attributes)"), GETOPT_NOEXTATTR);
|
||||||
ULO(_("(restore root dir owner/permissions)"), GETOPT_ROOTPERM );
|
ULO(_("(restore root dir owner/permissions)"), GETOPT_ROOTPERM);
|
||||||
ULO(_("(restore DMAPI event settings)"), GETOPT_SETDM );
|
ULO(_("(restore DMAPI event settings)"), GETOPT_SETDM);
|
||||||
diff --git a/man/man8/xfsrestore.8 b/man/man8/xfsrestore.8
|
diff --git a/man/man8/xfsrestore.8 b/man/man8/xfsrestore.8
|
||||||
index 60e4309..df7dde0 100644
|
index 60e4309..df7dde0 100644
|
||||||
--- a/man/man8/xfsrestore.8
|
--- a/man/man8/xfsrestore.8
|
||||||
@ -98,15 +98,15 @@ index 8bb5fa4..488ae20 100644
|
|||||||
+bool_t need_fixrootdir;
|
+bool_t need_fixrootdir;
|
||||||
char *media_change_alert_program = NULL;
|
char *media_change_alert_program = NULL;
|
||||||
size_t perssz;
|
size_t perssz;
|
||||||
|
|
||||||
@@ -964,6 +964,7 @@
|
@@ -958,6 +959,7 @@ content_init(int argc, char *argv[], size64_t vmsz)
|
||||||
firststsensepr = firststsenseprvalpr = BOOL_FALSE;
|
|
||||||
stsz = 0;
|
stsz = 0;
|
||||||
interpr = BOOL_FALSE;
|
interpr = BOOL_FALSE;
|
||||||
+ need_fixrootdir = BOOL_FALSE;
|
|
||||||
restore_rootdir_permissions = BOOL_FALSE;
|
restore_rootdir_permissions = BOOL_FALSE;
|
||||||
|
+ need_fixrootdir = BOOL_FALSE;
|
||||||
optind = 1;
|
optind = 1;
|
||||||
opterr = 0;
|
opterr = 0;
|
||||||
|
while ((c = getopt(argc, argv, GETOPT_CMDSTRING)) != EOF) {
|
||||||
@@ -1186,6 +1188,9 @@ content_init(int argc, char *argv[], size64_t vmsz)
|
@@ -1186,6 +1188,9 @@ content_init(int argc, char *argv[], size64_t vmsz)
|
||||||
case GETOPT_FMT2COMPAT:
|
case GETOPT_FMT2COMPAT:
|
||||||
tranp->t_truncategenpr = BOOL_TRUE;
|
tranp->t_truncategenpr = BOOL_TRUE;
|
||||||
@ -141,7 +141,7 @@ index b5bc004..b0c0c7d 100644
|
|||||||
#define GETOPT_BLOCKSIZE 'b' /* blocksize for rmt */
|
#define GETOPT_BLOCKSIZE 'b' /* blocksize for rmt */
|
||||||
@@ -51,7 +51,7 @@
|
@@ -51,7 +51,7 @@
|
||||||
/* 'u' */
|
/* 'u' */
|
||||||
#define GETOPT_VERBOSITY 'v' /* verbosity level (0 to 4 ) */
|
#define GETOPT_VERBOSITY 'v' /* verbosity level (0 to 4) */
|
||||||
#define GETOPT_SMALLWINDOW 'w' /* use a small window for dir entries */
|
#define GETOPT_SMALLWINDOW 'w' /* use a small window for dir entries */
|
||||||
-/* 'x' */
|
-/* 'x' */
|
||||||
+#define GETOPT_FIXROOTDIR 'x' /* try to fix rootdir due to bulkstat misuse */
|
+#define GETOPT_FIXROOTDIR 'x' /* try to fix rootdir due to bulkstat misuse */
|
||||||
@ -168,103 +168,119 @@ index 5429b74..bfa07fe 100644
|
|||||||
|
|
||||||
/* forward declarations of locally defined static functions ******************/
|
/* forward declarations of locally defined static functions ******************/
|
||||||
|
|
||||||
@@ -331,9 +331,45 @@
|
@@ -328,10 +328,47 @@ static tran_t *tranp = 0;
|
||||||
static char *persname = PERS_NAME;
|
static char *persname = PERS_NAME;
|
||||||
static char *orphname = ORPH_NAME;
|
static char *orphname = ORPH_NAME;
|
||||||
static xfs_ino_t orphino = ORPH_INO;
|
static xfs_ino_t orphino = ORPH_INO;
|
||||||
-
|
|
||||||
+static nh_t orig_rooth = NH_NULL;
|
+static nh_t orig_rooth = NH_NULL;
|
||||||
|
|
||||||
|
|
||||||
/* definition of locally defined global functions ****************************/
|
/* definition of locally defined global functions ****************************/
|
||||||
+
|
|
||||||
+void
|
+void
|
||||||
+tree_fixroot(void)
|
+tree_fixroot(void)
|
||||||
+{
|
+{
|
||||||
+ nh_t rooth = persp->p_rooth;
|
+ nh_t rooth = persp->p_rooth;
|
||||||
+ xfs_ino_t rootino;
|
+ xfs_ino_t rootino;
|
||||||
+
|
+
|
||||||
+ while (1) {
|
+ while (1) {
|
||||||
+ nh_t parh;
|
+ nh_t parh;
|
||||||
+ node_t *rootp = Node_map(rooth);
|
+ node_t *rootp = Node_map(rooth);
|
||||||
+
|
+
|
||||||
+ rootino = rootp->n_ino;
|
+ rootino = rootp->n_ino;
|
||||||
+ parh = rootp->n_parh;
|
+ parh = rootp->n_parh;
|
||||||
+ Node_unmap(rooth, &rootp);
|
+ Node_unmap(rooth, &rootp);
|
||||||
+
|
+
|
||||||
+ if (parh == rooth ||
|
+ if (parh == rooth ||
|
||||||
+ /*
|
+ /*
|
||||||
+ * since all new node (including non-parent)
|
+ * since all new node (including non-parent)
|
||||||
+ * would be adopted into orphh
|
+ * would be adopted into orphh
|
||||||
+ */
|
+ */
|
||||||
+ parh == persp->p_orphh ||
|
+ parh == persp->p_orphh ||
|
||||||
+ parh == NH_NULL)
|
+ parh == NH_NULL)
|
||||||
+ break;
|
+ break;
|
||||||
+ rooth = parh;
|
+ rooth = parh;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ if (rooth != persp->p_rooth) {
|
+ if (rooth != persp->p_rooth) {
|
||||||
+ persp->p_rooth = rooth;
|
+ persp->p_rooth = rooth;
|
||||||
+ persp->p_rootino = rootino;
|
+ persp->p_rootino = rootino;
|
||||||
+ disown(rooth);
|
+ disown(rooth);
|
||||||
+ adopt(persp->p_rooth, persp->p_orphh, NH_NULL);
|
+ adopt(persp->p_rooth, persp->p_orphh, NH_NULL);
|
||||||
+
|
+
|
||||||
+ mlog(MLOG_NORMAL, _("fix root # to %llu (bind mount?)\n"),
|
+ mlog(MLOG_NORMAL, _("fix root # to %llu (bind mount?)\n"),
|
||||||
+ rootino);
|
+ rootino);
|
||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
|
+
|
||||||
/* ARGSUSED */
|
/* ARGSUSED */
|
||||||
bool_t
|
bool_t
|
||||||
@@ -754,7 +790,8 @@
|
tree_init(char *hkdir,
|
||||||
|
@@ -746,7 +783,8 @@ tree_begindir(filehdr_t *fhdrp, dah_t *dahp)
|
||||||
/* lookup head of hardlink list
|
/* lookup head of hardlink list
|
||||||
*/
|
*/
|
||||||
hardh = link_hardh( ino, gen );
|
hardh = link_hardh(ino, gen);
|
||||||
- assert( ino != persp->p_rootino || hardh == persp->p_rooth );
|
- assert(ino != persp->p_rootino || hardh == persp->p_rooth);
|
||||||
+ if (need_fixrootdir == BOOL_FALSE)
|
+ if (need_fixrootdir == BOOL_FALSE)
|
||||||
+ assert( ino != persp->p_rootino || hardh == persp->p_rooth );
|
+ assert(ino != persp->p_rootino || hardh == persp->p_rooth);
|
||||||
|
|
||||||
/* already present
|
/* already present
|
||||||
*/
|
*/
|
||||||
@@ -1156,6 +1156,13 @@
|
@@ -815,7 +853,6 @@ tree_begindir(filehdr_t *fhdrp, dah_t *dahp)
|
||||||
ino,
|
adopt(persp->p_orphh, hardh, NRH_NULL);
|
||||||
gen );
|
*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. */
|
+ /* found the fake rootino from subdir, need fix p_rooth. */
|
||||||
+ if (need_fixrootdir == BOOL_TRUE &&
|
+ if (need_fixrootdir == BOOL_TRUE &&
|
||||||
+ persp->p_rootino == ino && hardh != persp->p_rooth) {
|
+ persp->p_rootino == ino && hardh != persp->p_rooth) {
|
||||||
+ mlog(MLOG_NORMAL,
|
+ mlog(MLOG_NORMAL,
|
||||||
+ _("found fake rootino #%llu, will fix.\n"), ino);
|
+ _("found fake rootino #%llu, will fix.\n"), ino);
|
||||||
+ persp->p_rooth = hardh;
|
+ persp->p_rooth = hardh;
|
||||||
+ }
|
+ }
|
||||||
return RV_OK;
|
return RV_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3808,7 +3853,26 @@ selsubtree_recurse_down(nh_t nh, bool_t sensepr)
|
||||||
@@ -3841,7 +3885,26 @@
|
|
||||||
static nh_t
|
static nh_t
|
||||||
link_hardh( xfs_ino_t ino, gen_t gen )
|
link_hardh(xfs_ino_t ino, gen_t gen)
|
||||||
{
|
{
|
||||||
- return hash_find( ino, gen );
|
- return hash_find(ino, gen);
|
||||||
+ nh_t tmp = hash_find(ino, gen);
|
+ nh_t tmp = hash_find(ino, gen);
|
||||||
+
|
+
|
||||||
+ /*
|
+ /*
|
||||||
+ * XXX (another workaround): the simply way is that don't reuse node_t
|
+ * XXX (another workaround): the simply way is that don't reuse node_t
|
||||||
+ * with gen = 0 created in tree_init(). Otherwise, it could cause
|
+ * with gen = 0 created in tree_init(). Otherwise, it could cause
|
||||||
+ * xfsrestore: tree.c:1003: tree_addent: Assertion
|
+ * xfsrestore: tree.c:1003: tree_addent: Assertion
|
||||||
+ * `hardp->n_nrh != NRH_NULL' failed.
|
+ * `hardp->n_nrh != NRH_NULL' failed.
|
||||||
+ * and that node_t is a dir node but the fake rootino could be a non-dir
|
+ * 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.
|
+ * plus reusing it could cause potential loop in tree hierarchy.
|
||||||
+ */
|
+ */
|
||||||
+ if (need_fixrootdir == BOOL_TRUE &&
|
+ if (need_fixrootdir == BOOL_TRUE &&
|
||||||
+ ino == persp->p_rootino && gen == 0 &&
|
+ ino == persp->p_rootino && gen == 0 &&
|
||||||
+ orig_rooth == NH_NULL) {
|
+ orig_rooth == NH_NULL) {
|
||||||
+ mlog(MLOG_NORMAL,
|
+ mlog(MLOG_NORMAL,
|
||||||
+_("link out fake rootino %llu with gen=0 created in tree_init()\n"), ino);
|
+_("link out fake rootino %llu with gen=0 created in tree_init()\n"), ino);
|
||||||
+ link_out(tmp);
|
+ link_out(tmp);
|
||||||
+ orig_rooth = tmp;
|
+ orig_rooth = tmp;
|
||||||
+ return NH_NULL;
|
+ return NH_NULL;
|
||||||
+ }
|
+ }
|
||||||
+ return tmp;
|
+ return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* returns following node in hard link list
|
/* returns following node in hard link list
|
||||||
@ -280,7 +296,7 @@ index bf66e3d..f5bd4ff 100644
|
|||||||
+
|
+
|
||||||
/* tree_init - creates a new tree abstraction.
|
/* tree_init - creates a new tree abstraction.
|
||||||
*/
|
*/
|
||||||
extern bool_t tree_init( char *hkdir,
|
extern bool_t tree_init(char *hkdir,
|
||||||
--
|
--
|
||||||
2.41.0
|
2.41.0
|
||||||
|
|
@ -1,66 +0,0 @@
|
|||||||
From 3b71c7f1f5a1dd45712d7de1139290d0a8cf03c4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Gao Xiang <hsiangkao@redhat.com>
|
|
||||||
Date: Thu, 3 Feb 2022 12:42:30 -0500
|
|
||||||
Subject: [PATCH 1/2] xfsdump: Revert "xfsdump: handle bind mount targets"
|
|
||||||
|
|
||||||
Bind mount mntpnts will be forbided in the next commits
|
|
||||||
instead since it's not the real rootdir.
|
|
||||||
|
|
||||||
This cannot be reverted cleanly due to several cleanup
|
|
||||||
patches, but the logic is reverted equivalently.
|
|
||||||
|
|
||||||
This reverts commit 25195ebf107dc81b1b7cea1476764950e1d6cc9d.
|
|
||||||
|
|
||||||
Fixes: 25195ebf107d ("xfsdump: handle bind mount targets")
|
|
||||||
Cc: Eric Sandeen <sandeen@redhat.com>
|
|
||||||
Signed-off-by: Gao Xiang <hsiangkao@redhat.com>
|
|
||||||
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
|
|
||||||
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
|
|
||||||
---
|
|
||||||
|
|
||||||
Index: xfsdump-3.1.8/dump/content.c
|
|
||||||
===================================================================
|
|
||||||
--- xfsdump-3.1.8.orig/dump/content.c
|
|
||||||
+++ xfsdump-3.1.8/dump/content.c
|
|
||||||
@@ -1382,17 +1382,11 @@ baseuuidbypass:
|
|
||||||
}
|
|
||||||
|
|
||||||
/* figure out the ino for the root directory of the fs
|
|
||||||
- * and get its xfs_bstat_t for inomap_build(). This could
|
|
||||||
- * be a bind mount; don't ask for the mount point inode,
|
|
||||||
- * find the actual lowest inode number in the filesystem.
|
|
||||||
+ * and get its xfs_bstat_t for inomap_build()
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
stat64_t rootstat;
|
|
||||||
- xfs_ino_t lastino = 0;
|
|
||||||
- int ocount = 0;
|
|
||||||
- xfs_fsop_bulkreq_t bulkreq;
|
|
||||||
|
|
||||||
- /* Get the inode of the mount point */
|
|
||||||
rval = fstat64( sc_fsfd, &rootstat );
|
|
||||||
if ( rval ) {
|
|
||||||
mlog( MLOG_NORMAL, _(
|
|
||||||
@@ -1404,21 +1398,11 @@ baseuuidbypass:
|
|
||||||
( xfs_bstat_t * )calloc( 1, sizeof( xfs_bstat_t ));
|
|
||||||
assert( sc_rootxfsstatp );
|
|
||||||
|
|
||||||
- /* Get the first valid (i.e. root) inode in this fs */
|
|
||||||
- bulkreq.lastip = (__u64 *)&lastino;
|
|
||||||
- bulkreq.icount = 1;
|
|
||||||
- bulkreq.ubuffer = sc_rootxfsstatp;
|
|
||||||
- bulkreq.ocount = &ocount;
|
|
||||||
- if (ioctl(sc_fsfd, XFS_IOC_FSBULKSTAT, &bulkreq) < 0) {
|
|
||||||
+ if (bigstat_one(sc_fsfd, rootstat.st_ino, sc_rootxfsstatp) < 0) {
|
|
||||||
mlog( MLOG_ERROR,
|
|
||||||
_("failed to get bulkstat information for root inode\n"));
|
|
||||||
return BOOL_FALSE;
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- if (sc_rootxfsstatp->bs_ino != rootstat.st_ino)
|
|
||||||
- mlog ( MLOG_NORMAL | MLOG_NOTE,
|
|
||||||
- _("root ino %lld differs from mount dir ino %lld, bind mount?\n"),
|
|
||||||
- sc_rootxfsstatp->bs_ino, rootstat.st_ino);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* alloc a file system handle, to be used with the jdm_open()
|
|
@ -34,12 +34,12 @@ diff --git a/restore/tree.c b/restore/tree.c
|
|||||||
index bfa07fe..6f3180f 100644
|
index bfa07fe..6f3180f 100644
|
||||||
--- a/restore/tree.c
|
--- a/restore/tree.c
|
||||||
+++ b/restore/tree.c
|
+++ b/restore/tree.c
|
||||||
@@ -783,8 +783,15 @@ tree_begindir( filehdr_t *fhdrp, dah_t *dahp )
|
@@ -783,8 +783,15 @@ tree_begindir(filehdr_t *fhdrp, dah_t *dahp)
|
||||||
/* lookup head of hardlink list
|
/* lookup head of hardlink list
|
||||||
*/
|
*/
|
||||||
hardh = link_hardh( ino, gen );
|
hardh = link_hardh(ino, gen);
|
||||||
- if (need_fixrootdir == BOOL_FALSE)
|
- if (need_fixrootdir == BOOL_FALSE)
|
||||||
- assert( ino != persp->p_rootino || hardh == persp->p_rooth );
|
- assert(ino != persp->p_rootino || hardh == persp->p_rooth);
|
||||||
+ if (need_fixrootdir == BOOL_FALSE &&
|
+ if (need_fixrootdir == BOOL_FALSE &&
|
||||||
+ !(ino != persp->p_rootino || hardh == persp->p_rooth)) {
|
+ !(ino != persp->p_rootino || hardh == persp->p_rooth)) {
|
||||||
+ mlog(MLOG_ERROR | MLOG_TREE,
|
+ mlog(MLOG_ERROR | MLOG_TREE,
|
@ -1,100 +0,0 @@
|
|||||||
From 0717c1cdfeaedc98df8af97b5ab110830e176a5b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Gao Xiang <hsiangkao@redhat.com>
|
|
||||||
Date: Thu, 3 Feb 2022 12:42:30 -0500
|
|
||||||
Subject: [PATCH 2/2] xfsdump: intercept bind mount targets
|
|
||||||
|
|
||||||
It's a bit strange pointing at some non-root bind mount target and
|
|
||||||
then actually dumping from the actual root dir instead.
|
|
||||||
|
|
||||||
Therefore, instead of searching for the root dir of the filesystem,
|
|
||||||
just intercept all bind mount targets by checking whose ino # of
|
|
||||||
".." is itself with getdents.
|
|
||||||
|
|
||||||
Fixes: 25195ebf107d ("xfsdump: handle bind mount targets")
|
|
||||||
Cc: Eric Sandeen <sandeen@redhat.com>
|
|
||||||
Signed-off-by: Gao Xiang <hsiangkao@redhat.com>
|
|
||||||
[sandeen: add explanatory comment to new function]
|
|
||||||
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
|
|
||||||
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
|
|
||||||
---
|
|
||||||
|
|
||||||
Index: xfsdump-3.1.8/dump/content.c
|
|
||||||
===================================================================
|
|
||||||
--- xfsdump-3.1.8.orig/dump/content.c
|
|
||||||
+++ xfsdump-3.1.8/dump/content.c
|
|
||||||
@@ -511,6 +511,60 @@ static bool_t create_inv_session(
|
|
||||||
ix_t subtreecnt,
|
|
||||||
size_t strmix);
|
|
||||||
|
|
||||||
+/*
|
|
||||||
+ * Verify that we are asked to dump from the root of the filesystem;
|
|
||||||
+ * test this by checking whether the inode number we've been given matches
|
|
||||||
+ * the inode number for this directory's ".."
|
|
||||||
+ */
|
|
||||||
+static bool_t
|
|
||||||
+check_rootdir(int fd,
|
|
||||||
+ xfs_ino_t ino)
|
|
||||||
+{
|
|
||||||
+ struct dirent *gdp;
|
|
||||||
+ size_t gdsz;
|
|
||||||
+ bool_t found = BOOL_FALSE;
|
|
||||||
+
|
|
||||||
+ gdsz = sizeof(struct dirent) + NAME_MAX + 1;
|
|
||||||
+ if (gdsz < GETDENTSBUF_SZ_MIN)
|
|
||||||
+ gdsz = GETDENTSBUF_SZ_MIN;
|
|
||||||
+ gdp = (struct dirent *)calloc(1, gdsz);
|
|
||||||
+ assert(gdp);
|
|
||||||
+
|
|
||||||
+ while (1) {
|
|
||||||
+ struct dirent *p;
|
|
||||||
+ int nread;
|
|
||||||
+
|
|
||||||
+ nread = getdents_wrap(fd, (char *)gdp, gdsz);
|
|
||||||
+ /*
|
|
||||||
+ * negative count indicates something very bad happened;
|
|
||||||
+ * try to gracefully end this dir.
|
|
||||||
+ */
|
|
||||||
+ if (nread < 0) {
|
|
||||||
+ mlog(MLOG_NORMAL | MLOG_WARNING,
|
|
||||||
+_("unable to read dirents for directory ino %llu: %s\n"),
|
|
||||||
+ ino, strerror(errno));
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* no more directory entries: break; */
|
|
||||||
+ if (!nread)
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ for (p = gdp; nread > 0;
|
|
||||||
+ nread -= (int)p->d_reclen,
|
|
||||||
+ assert(nread >= 0),
|
|
||||||
+ p = (struct dirent *)((char *)p + p->d_reclen)) {
|
|
||||||
+ if (!strcmp(p->d_name, "..")) {
|
|
||||||
+ if (p->d_ino == ino)
|
|
||||||
+ found = BOOL_TRUE;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ free(gdp);
|
|
||||||
+ return found;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
bool_t
|
|
||||||
content_init( int argc,
|
|
||||||
char *argv[ ],
|
|
||||||
@@ -1394,6 +1448,14 @@ baseuuidbypass:
|
|
||||||
mntpnt );
|
|
||||||
return BOOL_FALSE;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ if (!check_rootdir(sc_fsfd, rootstat.st_ino)) {
|
|
||||||
+ mlog(MLOG_ERROR,
|
|
||||||
+_("%s is not the root of the filesystem (bind mount?) - use primary mountpoint\n"),
|
|
||||||
+ mntpnt);
|
|
||||||
+ return BOOL_FALSE;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
sc_rootxfsstatp =
|
|
||||||
( xfs_bstat_t * )calloc( 1, sizeof( xfs_bstat_t ));
|
|
||||||
assert( sc_rootxfsstatp );
|
|
@ -1,38 +0,0 @@
|
|||||||
From 6ff49bf7951e5951bd8f938fc3662c896a1bf9e8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jan Tulak <jtulak@redhat.com>
|
|
||||||
Date: Thu, 6 Dec 2018 17:10:00 -0600
|
|
||||||
Subject: [PATCH] common/types.h: Wrap #define UUID_STR_LEN 36 in #ifndef
|
|
||||||
|
|
||||||
Current Fedora 28 has the constant it in uuid/uuid.h where it belongs (per
|
|
||||||
comment next to the define), so we should treat the define as a
|
|
||||||
backward-compatibility workaround, rather than enforcing it for all.
|
|
||||||
|
|
||||||
Signed-off-by: Jan Tulak <jtulak@redhat.com>
|
|
||||||
[sandeen: tweak comment to match]
|
|
||||||
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
|
|
||||||
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
|
|
||||||
Signed-off-by: Pavel Reichl <preichl@redhat.com>
|
|
||||||
---
|
|
||||||
common/types.h | 4 +++-
|
|
||||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/common/types.h b/common/types.h
|
|
||||||
index 50c841e..b619667 100644
|
|
||||||
--- a/common/types.h
|
|
||||||
+++ b/common/types.h
|
|
||||||
@@ -33,9 +33,11 @@
|
|
||||||
#define XFSDUMP_DIRPATH inv_basepath()
|
|
||||||
|
|
||||||
/*
|
|
||||||
- * Should be, but isn't, defined in uuid/uuid.h
|
|
||||||
+ * If not defined in uuid/uuid.h
|
|
||||||
*/
|
|
||||||
+#ifndef UUID_STR_LEN
|
|
||||||
#define UUID_STR_LEN 36
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
/* fundamental page size - probably should not be hardwired, but
|
|
||||||
* for now we will
|
|
||||||
--
|
|
||||||
2.41.0
|
|
||||||
|
|
@ -1,149 +0,0 @@
|
|||||||
From 06dd184d3a689dcb33a50b6e3576e48055e48133 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Donald Douwsma <ddouwsma@redhat.com>
|
|
||||||
Date: Fri, 14 Oct 2022 18:58:44 +1100
|
|
||||||
Subject: [PATCH 1/4] xfsrestore: fix on-media inventory media unpacking
|
|
||||||
|
|
||||||
When xfsrestore reads the inventory from tape media it fails to convert
|
|
||||||
media file records from bigendian. If the xfsdump inventory is not
|
|
||||||
available xfsrestore will write this invalid record to the on-line
|
|
||||||
inventory.
|
|
||||||
|
|
||||||
[root@rhel8 ~]# xfsdump -L Test1 -M "" -f /dev/st0 /boot > /dev/null
|
|
||||||
[root@rhel8 ~]# xfsdump -L Test2 -M "" -f /dev/st0 /boot > /dev/null
|
|
||||||
[root@rhel8 ~]# rm -rf /var/lib/xfsdump/inventory/
|
|
||||||
[root@rhel8 ~]# mt -f /dev/nst0 asf 2
|
|
||||||
[root@rhel8 ~]# xfsrestore -f /dev/nst0 -L Test2 /tmp/test2
|
|
||||||
xfsrestore: using scsi tape (drive_scsitape) strategy
|
|
||||||
xfsrestore: version 3.1.8 (dump format 3.0) - type ^C for status and control
|
|
||||||
xfsrestore: searching media for dump
|
|
||||||
xfsrestore: preparing drive
|
|
||||||
xfsrestore: examining media file 3
|
|
||||||
xfsrestore: found dump matching specified label:
|
|
||||||
xfsrestore: hostname: rhel8
|
|
||||||
xfsrestore: mount point: /boot
|
|
||||||
xfsrestore: volume: /dev/sda1
|
|
||||||
xfsrestore: session time: Tue Sep 27 16:05:28 2022
|
|
||||||
xfsrestore: level: 0
|
|
||||||
xfsrestore: session label: "Test2"
|
|
||||||
xfsrestore: media label: ""
|
|
||||||
xfsrestore: file system id: 26dd5aa0-b901-4cf5-9b68-0c5753cb3ab8
|
|
||||||
xfsrestore: session id: 62402423-7ae0-49ed-8ecb-9e5bc7642b91
|
|
||||||
xfsrestore: media id: 47ba45ca-3417-4006-ab10-3dc6419b83e2
|
|
||||||
xfsrestore: incorporating on-media session inventory into online inventory
|
|
||||||
xfsrestore: /var/lib/xfsdump/inventory created
|
|
||||||
xfsrestore: using on-media session inventory
|
|
||||||
xfsrestore: searching media for directory dump
|
|
||||||
xfsrestore: rewinding
|
|
||||||
xfsrestore: examining media file 0
|
|
||||||
xfsrestore: inventory session uuid (62402423-7ae0-49ed-8ecb-9e5bc7642b91) does not match the media header's session uuid (1771d9e8-a1ba-4e87-a61e-f6be97e41b45)
|
|
||||||
xfsrestore: examining media file 1
|
|
||||||
xfsrestore: inventory session uuid (62402423-7ae0-49ed-8ecb-9e5bc7642b91) does not match the media header's session uuid (1771d9e8-a1ba-4e87-a61e-f6be97e41b45)
|
|
||||||
xfsrestore: examining media file 2
|
|
||||||
xfsrestore: reading directories
|
|
||||||
xfsrestore: 9 directories and 320 entries processed
|
|
||||||
xfsrestore: directory post-processing
|
|
||||||
xfsrestore: restore complete: 0 seconds elapsed
|
|
||||||
xfsrestore: Restore Summary:
|
|
||||||
xfsrestore: stream 0 /dev/nst0 OK (success)
|
|
||||||
xfsrestore: Restore Status: SUCCESS
|
|
||||||
[root@rhel8 ~]# xfsdump -I
|
|
||||||
file system 0:
|
|
||||||
fs id: 26dd5aa0-b901-4cf5-9b68-0c5753cb3ab8
|
|
||||||
session 0:
|
|
||||||
mount point: rhel8:/boot
|
|
||||||
device: rhel8:/dev/sda1
|
|
||||||
time: Tue Sep 27 16:05:28 2022
|
|
||||||
session label: "Test2"
|
|
||||||
session id: 62402423-7ae0-49ed-8ecb-9e5bc7642b91
|
|
||||||
level: 0
|
|
||||||
resumed: NO
|
|
||||||
subtree: NO
|
|
||||||
streams: 1
|
|
||||||
stream 0:
|
|
||||||
pathname: /dev/st0
|
|
||||||
start: ino 133 offset 0
|
|
||||||
end: ino 1572997 offset 0
|
|
||||||
interrupted: YES
|
|
||||||
media files: 1
|
|
||||||
media file 0:
|
|
||||||
mfile index: 33554432
|
|
||||||
mfile type: data
|
|
||||||
mfile size: 211187836911616
|
|
||||||
mfile start: ino 9583660007044415488 offset 0
|
|
||||||
mfile end: ino 9583686395323482112 offset 0
|
|
||||||
media label: ""
|
|
||||||
media id: 47ba45ca-3417-4006-ab10-3dc6419b83e2
|
|
||||||
xfsdump: Dump Status: SUCCESS
|
|
||||||
[root@rhel8 ~]#
|
|
||||||
[root@rhel8 ~]# ls /tmp/test2
|
|
||||||
efi grub2 loader
|
|
||||||
|
|
||||||
The invalid start and end inode information cause xfsrestore to consider
|
|
||||||
that non-directory files do not reside in the current media and will
|
|
||||||
fail to restore them.
|
|
||||||
|
|
||||||
The behaviour of an initial restore may succeed if the position of the
|
|
||||||
tape is such that the data file is encountered before the inventory
|
|
||||||
file, or if there is only one dump session on tape, xfsrestore is
|
|
||||||
somewhat inconsistent in this regard. Subsequent restores will use the
|
|
||||||
invalid on-line inventory and fail to restore files.
|
|
||||||
|
|
||||||
Fix this by correctly unpacking the inventory data.
|
|
||||||
|
|
||||||
Signed-off-by: Donald Douwsma <ddouwsma@redhat.com>
|
|
||||||
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
|
|
||||||
Signed-off-by: Carlos Maiolino <cem@kernel.org>
|
|
||||||
Signed-off-by: Pavel Reichl <preichl@redhat.com>
|
|
||||||
---
|
|
||||||
inventory/inv_stobj.c | 27 +++++++--------------------
|
|
||||||
1 file changed, 7 insertions(+), 20 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/inventory/inv_stobj.c b/inventory/inv_stobj.c
|
|
||||||
index e2e8767..cdf3300 100644
|
|
||||||
--- a/inventory/inv_stobj.c
|
|
||||||
+++ b/inventory/inv_stobj.c
|
|
||||||
@@ -1008,7 +1008,7 @@
|
|
||||||
size_t bufsz,
|
|
||||||
invt_sessinfo_t *s )
|
|
||||||
{
|
|
||||||
- uint i;
|
|
||||||
+ uint i, j;
|
|
||||||
char *tmpbuf;
|
|
||||||
char *p = (char *)bufp;
|
|
||||||
|
|
||||||
@@ -1087,26 +1087,13 @@
|
|
||||||
|
|
||||||
/* all the media files */
|
|
||||||
s->mfiles = (invt_mediafile_t *)p;
|
|
||||||
-
|
|
||||||
-#ifdef INVT_DELETION
|
|
||||||
- {
|
|
||||||
- int tmpfd = open( "moids", O_RDWR | O_CREAT, S_IRUSR|S_IWUSR );
|
|
||||||
- uint j;
|
|
||||||
- invt_mediafile_t *mmf = s->mfiles;
|
|
||||||
- for (i=0; i< s->ses->s_cur_nstreams; i++ ) {
|
|
||||||
- for (j=0; j< s->strms[ i ].st_nmediafiles;
|
|
||||||
- j++, mmf++ )
|
|
||||||
- xlate_invt_mediafile((invt_mediafile_t *)mmf, (invt_mediafile_t *)tmpbuf, 1);
|
|
||||||
- bcopy(tmpbuf, mmf, sizeof(invt_mediafile_t));
|
|
||||||
- put_invtrecord( tmpfd, &mmf->mf_moid,
|
|
||||||
- sizeof( uuid_t ), 0, SEEK_END, 0 );
|
|
||||||
- }
|
|
||||||
- close( tmpfd );
|
|
||||||
- }
|
|
||||||
-#endif
|
|
||||||
for ( i = 0; i < s->ses->s_cur_nstreams; i++ ) {
|
|
||||||
- p += (size_t) ( s->strms[ i ].st_nmediafiles )
|
|
||||||
- * sizeof( invt_mediafile_t );
|
|
||||||
+ for(j = 0; j < s->strms[i].st_nmediafiles; j++) {
|
|
||||||
+ xlate_invt_mediafile((invt_mediafile_t *)p,
|
|
||||||
+ (invt_mediafile_t *)tmpbuf, 1);
|
|
||||||
+ bcopy(tmpbuf, p, sizeof(invt_mediafile_t));
|
|
||||||
+ p += sizeof(invt_mediafile_t);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* sanity check the size of the buffer given to us vs. the size it
|
|
||||||
--
|
|
||||||
2.41.0
|
|
||||||
|
|
@ -1,204 +0,0 @@
|
|||||||
From 65034077ef03c434c09c88d38c4c58ec442cf3c1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Donald Douwsma <ddouwsma@redhat.com>
|
|
||||||
Date: Fri, 14 Oct 2022 18:58:45 +1100
|
|
||||||
Subject: [PATCH 2/4] xfsrestore: fix on-media inventory stream unpacking
|
|
||||||
|
|
||||||
xfsdump can create multiple streams, when restoring the online inventory
|
|
||||||
with multiple streams we fail to process these and assert when the
|
|
||||||
inventory buffer is not fully decoded.
|
|
||||||
|
|
||||||
[root@rhel8 ~]# xfsdump -L "Test1" -f /dev/nst0 -M tape1 -f /dev/nst1 -M tape2 /boot
|
|
||||||
xfsdump: using scsi tape (drive_scsitape) strategy
|
|
||||||
xfsdump: using scsi tape (drive_scsitape) strategy
|
|
||||||
xfsdump: version 3.1.8 (dump format 3.0) - type ^C for status and control
|
|
||||||
xfsdump: level 0 dump of rhel8:/boot
|
|
||||||
xfsdump: dump date: Thu Oct 6 13:50:45 2022
|
|
||||||
xfsdump: session id: aa25fa48-4493-45c7-9027-61e53e486445
|
|
||||||
xfsdump: session label: "Test1"
|
|
||||||
xfsdump: ino map phase 1: constructing initial dump list
|
|
||||||
xfsdump: ino map phase 2: skipping (no pruning necessary)
|
|
||||||
xfsdump: ino map phase 3: identifying stream starting points
|
|
||||||
xfsdump: stream 0: ino 133 offset 0 to ino 28839 offset 0
|
|
||||||
xfsdump: stream 1: ino 28839 offset 0 to end
|
|
||||||
xfsdump: ino map construction complete
|
|
||||||
xfsdump: estimated dump size: 328720704 bytes
|
|
||||||
xfsdump: estimated dump size per stream: 164375728 bytes
|
|
||||||
xfsdump: /var/lib/xfsdump/inventory created
|
|
||||||
xfsdump: drive 0: preparing drive
|
|
||||||
xfsdump: drive 1: preparing drive
|
|
||||||
xfsdump: drive 1: creating dump session media file 0 (media 0, file 0)
|
|
||||||
xfsdump: drive 1: dumping ino map
|
|
||||||
xfsdump: drive 1: dumping non-directory files
|
|
||||||
xfsdump: drive 0: creating dump session media file 0 (media 0, file 0)
|
|
||||||
xfsdump: drive 0: dumping ino map
|
|
||||||
xfsdump: drive 0: dumping directories
|
|
||||||
xfsdump: drive 0: dumping non-directory files
|
|
||||||
xfsdump: drive 1: ending media file
|
|
||||||
xfsdump: drive 1: media file size 166723584 bytes
|
|
||||||
xfsdump: drive 1: waiting for synchronized session inventory dump
|
|
||||||
xfsdump: drive 0: ending media file
|
|
||||||
xfsdump: drive 0: media file size 165675008 bytes
|
|
||||||
xfsdump: drive 0: waiting for synchronized session inventory dump
|
|
||||||
xfsdump: drive 0: dumping session inventory
|
|
||||||
xfsdump: drive 0: beginning inventory media file
|
|
||||||
xfsdump: drive 0: media file 1 (media 0, file 1)
|
|
||||||
xfsdump: drive 0: ending inventory media file
|
|
||||||
xfsdump: drive 0: inventory media file size 2097152 bytes
|
|
||||||
xfsdump: drive 0: writing stream terminator
|
|
||||||
xfsdump: drive 0: beginning media stream terminator
|
|
||||||
xfsdump: drive 0: media file 2 (media 0, file 2)
|
|
||||||
xfsdump: drive 0: ending media stream terminator
|
|
||||||
xfsdump: drive 0: media stream terminator size 1048576 bytes
|
|
||||||
xfsdump: drive 1: dumping session inventory
|
|
||||||
xfsdump: drive 1: beginning inventory media file
|
|
||||||
xfsdump: drive 1: media file 1 (media 0, file 1)
|
|
||||||
xfsdump: drive 1: ending inventory media file
|
|
||||||
xfsdump: drive 1: inventory media file size 2097152 bytes
|
|
||||||
xfsdump: drive 1: writing stream terminator
|
|
||||||
xfsdump: drive 1: beginning media stream terminator
|
|
||||||
xfsdump: drive 1: media file 2 (media 0, file 2)
|
|
||||||
xfsdump: drive 1: ending media stream terminator
|
|
||||||
xfsdump: drive 1: media stream terminator size 1048576 bytes
|
|
||||||
xfsdump: dump size (non-dir files) : 328189016 bytes
|
|
||||||
xfsdump: dump complete: 4 seconds elapsed
|
|
||||||
xfsdump: Dump Summary:
|
|
||||||
xfsdump: stream 0 /dev/nst0 OK (success)
|
|
||||||
xfsdump: stream 1 /dev/nst1 OK (success)
|
|
||||||
xfsdump: Dump Status: SUCCESS
|
|
||||||
[root@rhel8 ~]# xfsdump -I
|
|
||||||
file system 0:
|
|
||||||
fs id: 26dd5aa0-b901-4cf5-9b68-0c5753cb3ab8
|
|
||||||
session 0:
|
|
||||||
mount point: rhel8:/boot
|
|
||||||
device: rhel8:/dev/sda1
|
|
||||||
time: Thu Oct 6 13:50:45 2022
|
|
||||||
session label: "Test1"
|
|
||||||
session id: aa25fa48-4493-45c7-9027-61e53e486445
|
|
||||||
level: 0
|
|
||||||
resumed: NO
|
|
||||||
subtree: NO
|
|
||||||
streams: 2
|
|
||||||
stream 0:
|
|
||||||
pathname: /dev/nst0
|
|
||||||
start: ino 133 offset 0
|
|
||||||
end: ino 28839 offset 0
|
|
||||||
interrupted: NO
|
|
||||||
media files: 2
|
|
||||||
media file 0:
|
|
||||||
mfile index: 0
|
|
||||||
mfile type: data
|
|
||||||
mfile size: 165675008
|
|
||||||
mfile start: ino 133 offset 0
|
|
||||||
mfile end: ino 28839 offset 0
|
|
||||||
media label: "tape1"
|
|
||||||
media id: adb31f2a-f026-4597-a20a-326f28ecbaf1
|
|
||||||
media file 1:
|
|
||||||
mfile index: 1
|
|
||||||
mfile type: inventory
|
|
||||||
mfile size: 2097152
|
|
||||||
media label: "tape1"
|
|
||||||
media id: adb31f2a-f026-4597-a20a-326f28ecbaf1
|
|
||||||
stream 1:
|
|
||||||
pathname: /dev/nst1
|
|
||||||
start: ino 28839 offset 0
|
|
||||||
end: ino 1572997 offset 0
|
|
||||||
interrupted: NO
|
|
||||||
media files: 2
|
|
||||||
media file 0:
|
|
||||||
mfile index: 0
|
|
||||||
mfile type: data
|
|
||||||
mfile size: 166723584
|
|
||||||
mfile start: ino 28839 offset 0
|
|
||||||
mfile end: ino 1572997 offset 0
|
|
||||||
media label: "tape2"
|
|
||||||
media id: 22224f02-b6c7-47d5-ad61-a61ba071c8a8
|
|
||||||
media file 1:
|
|
||||||
mfile index: 1
|
|
||||||
mfile type: inventory
|
|
||||||
mfile size: 2097152
|
|
||||||
media label: "tape2"
|
|
||||||
media id: 22224f02-b6c7-47d5-ad61-a61ba071c8a8
|
|
||||||
xfsdump: Dump Status: SUCCESS
|
|
||||||
[root@rhel8 ~]# mv /var/lib/xfsdump/inventory /var/lib/xfsdump/inventory_two_sessions
|
|
||||||
[root@rhel8 ~]# xfsdump -I
|
|
||||||
xfsdump: Dump Status: SUCCESS
|
|
||||||
|
|
||||||
[root@rhel8 ~]# xfsrestore -L Test1 -f /dev/nst0 /tmp/test1/
|
|
||||||
xfsrestore: using scsi tape (drive_scsitape) strategy
|
|
||||||
xfsrestore: version 3.1.8 (dump format 3.0) - type ^C for status and control
|
|
||||||
xfsrestore: searching media for dump
|
|
||||||
xfsrestore: preparing drive
|
|
||||||
xfsrestore: examining media file 2
|
|
||||||
xfsrestore: found dump matching specified label:
|
|
||||||
xfsrestore: hostname: rhel8
|
|
||||||
xfsrestore: mount point: /boot
|
|
||||||
xfsrestore: volume: /dev/sda1
|
|
||||||
xfsrestore: session time: Thu Oct 6 13:50:45 2022
|
|
||||||
xfsrestore: level: 0
|
|
||||||
xfsrestore: session label: "Test1"
|
|
||||||
xfsrestore: media label: "tape1"
|
|
||||||
xfsrestore: file system id: 26dd5aa0-b901-4cf5-9b68-0c5753cb3ab8
|
|
||||||
xfsrestore: session id: aa25fa48-4493-45c7-9027-61e53e486445
|
|
||||||
xfsrestore: media id: adb31f2a-f026-4597-a20a-326f28ecbaf1
|
|
||||||
xfsrestore: searching media for directory dump
|
|
||||||
xfsrestore: rewinding
|
|
||||||
xfsrestore: examining media file 0
|
|
||||||
xfsrestore: reading directories
|
|
||||||
xfsrestore: 9 directories and 320 entries processed
|
|
||||||
xfsrestore: directory post-processing
|
|
||||||
xfsrestore: restoring non-directory files
|
|
||||||
xfsrestore: examining media file 1
|
|
||||||
xfsrestore: inv_stobj.c:1119: stobj_unpack_sessinfo: Assertion `(size_t) ( p - (char *) bufp ) == bufsz' failed.
|
|
||||||
Aborted (core dumped)
|
|
||||||
|
|
||||||
Make sure we unpack multiple streams when restoring the online
|
|
||||||
inventory from media.
|
|
||||||
|
|
||||||
Signed-off-by: Donald Douwsma <ddouwsma@redhat.com>
|
|
||||||
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
|
|
||||||
Signed-off-by: Carlos Maiolino <cem@kernel.org>
|
|
||||||
Signed-off-by: Pavel Reichl <preichl@redhat.com>
|
|
||||||
---
|
|
||||||
inventory/inv_stobj.c | 13 +++++++------
|
|
||||||
1 file changed, 7 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/inventory/inv_stobj.c b/inventory/inv_stobj.c
|
|
||||||
index cdf3300..42b86dc 100644
|
|
||||||
--- a/inventory/inv_stobj.c
|
|
||||||
+++ b/inventory/inv_stobj.c
|
|
||||||
@@ -1065,25 +1065,26 @@
|
|
||||||
return BOOL_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /* get the seshdr and then, the remainder of the session */
|
|
||||||
xlate_invt_seshdr((invt_seshdr_t *)p, (invt_seshdr_t *)tmpbuf, 1);
|
|
||||||
bcopy(tmpbuf, p, sizeof(invt_seshdr_t));
|
|
||||||
-
|
|
||||||
- /* get the seshdr and then, the remainder of the session */
|
|
||||||
s->seshdr = (invt_seshdr_t *)p;
|
|
||||||
s->seshdr->sh_sess_off = -1;
|
|
||||||
p += sizeof( invt_seshdr_t );
|
|
||||||
|
|
||||||
-
|
|
||||||
xlate_invt_session((invt_session_t *)p, (invt_session_t *)tmpbuf, 1);
|
|
||||||
bcopy (tmpbuf, p, sizeof(invt_session_t));
|
|
||||||
s->ses = (invt_session_t *)p;
|
|
||||||
p += sizeof( invt_session_t );
|
|
||||||
|
|
||||||
/* the array of all the streams belonging to this session */
|
|
||||||
- xlate_invt_stream((invt_stream_t *)p, (invt_stream_t *)tmpbuf, 1);
|
|
||||||
- bcopy(tmpbuf, p, sizeof(invt_stream_t));
|
|
||||||
s->strms = (invt_stream_t *)p;
|
|
||||||
- p += s->ses->s_cur_nstreams * sizeof( invt_stream_t );
|
|
||||||
+ for (i = 0; i < s->ses->s_cur_nstreams; i++) {
|
|
||||||
+ xlate_invt_stream((invt_stream_t *)p,
|
|
||||||
+ (invt_stream_t *)tmpbuf, 1);
|
|
||||||
+ bcopy(tmpbuf, p, sizeof(invt_stream_t));
|
|
||||||
+ p += sizeof(invt_stream_t);
|
|
||||||
+ }
|
|
||||||
|
|
||||||
/* all the media files */
|
|
||||||
s->mfiles = (invt_mediafile_t *)p;
|
|
||||||
--
|
|
||||||
2.41.0
|
|
||||||
|
|
@ -1,91 +0,0 @@
|
|||||||
From 7b843fdbbe47ed36117fc0e1fb95e4288f3a9c83 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Donald Douwsma <ddouwsma@redhat.com>
|
|
||||||
Date: Fri, 14 Oct 2022 18:58:46 +1100
|
|
||||||
Subject: [PATCH 3/4] xfsdump: fix on-media inventory stream packing
|
|
||||||
|
|
||||||
With the on-media inventory now being restored for multiple streams we
|
|
||||||
can see that the restored streams both claim to be for /dev/nst0.
|
|
||||||
|
|
||||||
[root@rhel8 xfsdump-dev]# xfsdump -L "Test" -f /dev/nst0 -M tape1 -f /dev/nst1 -M tape2 /boot
|
|
||||||
...
|
|
||||||
[root@rhel8 ~]# rm -rf /var/lib/xfsdump/inventory
|
|
||||||
[root@rhel8 xfsdump-dev]# restore/xfsrestore -L Test -f /dev/nst0 -f /dev/nst1 /tmp/test
|
|
||||||
restore/xfsrestore: using scsi tape (drive_scsitape) strategy
|
|
||||||
restore/xfsrestore: using scsi tape (drive_scsitape) strategy
|
|
||||||
restore/xfsrestore: version 3.1.10 (dump format 3.0) - type ^C for status and control
|
|
||||||
...
|
|
||||||
restore/xfsrestore: Restore Summary:
|
|
||||||
restore/xfsrestore: stream 0 /dev/nst0 OK (success)
|
|
||||||
restore/xfsrestore: stream 1 /dev/nst1 ALREADY_DONE (another stream completed the operation)
|
|
||||||
restore/xfsrestore: Restore Status: SUCCESS
|
|
||||||
[root@rhel8 xfsdump-dev]# xfsdump -I
|
|
||||||
file system 0:
|
|
||||||
fs id: 26dd5aa0-b901-4cf5-9b68-0c5753cb3ab8
|
|
||||||
session 0:
|
|
||||||
mount point: rhel8:/boot
|
|
||||||
device: rhel8:/dev/sda1
|
|
||||||
time: Fri Oct 14 18:31:40 2022
|
|
||||||
session label: "Test"
|
|
||||||
session id: 96538a3d-2af8-4a79-8865-afec6e3e55f4
|
|
||||||
level: 0
|
|
||||||
resumed: NO
|
|
||||||
subtree: NO
|
|
||||||
streams: 2
|
|
||||||
stream 0:
|
|
||||||
pathname: /dev/nst0
|
|
||||||
start: ino 133 offset 0
|
|
||||||
end: ino 28839 offset 0
|
|
||||||
interrupted: YES
|
|
||||||
media files: 1
|
|
||||||
media file 0:
|
|
||||||
mfile index: 0
|
|
||||||
mfile type: data
|
|
||||||
mfile size: 165675008
|
|
||||||
mfile start: ino 133 offset 0
|
|
||||||
mfile end: ino 28839 offset 0
|
|
||||||
media label: "tape1"
|
|
||||||
media id: 8a9d0ced-61f6-4332-a0c1-f1e38641c4e6
|
|
||||||
stream 1:
|
|
||||||
pathname: /dev/nst0
|
|
||||||
start: ino 133 offset 0
|
|
||||||
end: ino 28839 offset 0
|
|
||||||
interrupted: YES
|
|
||||||
media files: 1
|
|
||||||
media file 0:
|
|
||||||
mfile index: 0
|
|
||||||
mfile type: data
|
|
||||||
mfile size: 166723584
|
|
||||||
mfile start: ino 28839 offset 0
|
|
||||||
mfile end: ino 1572997 offset 0
|
|
||||||
media label: "tape2"
|
|
||||||
media id: 7d569377-6bfb-4c02-b299-4dbe753bb048
|
|
||||||
xfsdump: Dump Status: SUCCESS
|
|
||||||
[root@rhel8 xfsdump-dev]#
|
|
||||||
|
|
||||||
Fix this by indexing the stream being packed for the on-media inventory.
|
|
||||||
|
|
||||||
Signed-off-by: Donald Douwsma <ddouwsma@redhat.com>
|
|
||||||
Suggested-by: Darrick J. Wong <djwong@kernel.org>
|
|
||||||
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
|
|
||||||
Signed-off-by: Carlos Maiolino <cem@kernel.org>
|
|
||||||
Signed-off-by: Pavel Reichl <preichl@redhat.com>
|
|
||||||
---
|
|
||||||
inventory/inv_stobj.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/inventory/inv_stobj.c b/inventory/inv_stobj.c
|
|
||||||
index 42b86dc..d6aedf2 100644
|
|
||||||
--- a/inventory/inv_stobj.c
|
|
||||||
+++ b/inventory/inv_stobj.c
|
|
||||||
@@ -798,7 +798,7 @@
|
|
||||||
sesbuf += sizeof( invt_session_t );
|
|
||||||
|
|
||||||
for ( i = 0; i < ses->s_cur_nstreams; i++ ) {
|
|
||||||
- xlate_invt_stream( strms, (invt_stream_t *)sesbuf, 1 );
|
|
||||||
+ xlate_invt_stream(&strms[i], (invt_stream_t *)sesbuf, 1);
|
|
||||||
sesbuf += sizeof( invt_stream_t );
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.41.0
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
|||||||
From aaaa57f32a605e4ebd2e4230fe036afc009ae0a0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Donald Douwsma <ddouwsma@redhat.com>
|
|
||||||
Date: Fri, 14 Oct 2022 18:58:47 +1100
|
|
||||||
Subject: [PATCH 4/4] xfsrestore: untangle inventory unpacking logic
|
|
||||||
|
|
||||||
stobj_unpack_sessinfo returns bool_t, fix logic in pi_addfile so errors
|
|
||||||
can be properly reported.
|
|
||||||
|
|
||||||
Signed-off-by: Donald Douwsma <ddouwsma@redhat.com>
|
|
||||||
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
|
|
||||||
Signed-off-by: Carlos Maiolino <cem@kernel.org>
|
|
||||||
Signed-off-by: Pavel Reichl <preichl@redhat.com>
|
|
||||||
---
|
|
||||||
restore/content.c | 13 +++++--------
|
|
||||||
1 file changed, 5 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/restore/content.c b/restore/content.c
|
|
||||||
index b19bb90..8bb5fa4 100644
|
|
||||||
--- a/restore/content.c
|
|
||||||
+++ b/restore/content.c
|
|
||||||
@@ -5467,18 +5467,14 @@
|
|
||||||
/* ask inventory to convert buffer into session
|
|
||||||
* desc.
|
|
||||||
*/
|
|
||||||
- sessp = 0;
|
|
||||||
- if ( ! buflen ) {
|
|
||||||
- ok = BOOL_FALSE;
|
|
||||||
- } else {
|
|
||||||
- /* extract the session information from the buffer */
|
|
||||||
- if ( stobj_unpack_sessinfo( bufp, buflen, &sessinfo )<0 ) {
|
|
||||||
- ok = BOOL_FALSE;
|
|
||||||
- } else {
|
|
||||||
+ ok = BOOL_FALSE;
|
|
||||||
+ /* extract the session information from the buffer */
|
|
||||||
+ if (buflen &&
|
|
||||||
+ stobj_unpack_sessinfo(bufp, buflen, &sessinfo)) {
|
|
||||||
stobj_convert_sessinfo(&sessp, &sessinfo);
|
|
||||||
ok = BOOL_TRUE;
|
|
||||||
- }
|
|
||||||
}
|
|
||||||
+
|
|
||||||
if ( ! ok || ! sessp ) {
|
|
||||||
mlog( MLOG_DEBUG | MLOG_WARNING | MLOG_MEDIA, _(
|
|
||||||
"on-media session "
|
|
||||||
--
|
|
||||||
2.41.0
|
|
||||||
|
|
174
SOURCES/13F703E6C11CF6F0.asc
Normal file
174
SOURCES/13F703E6C11CF6F0.asc
Normal file
@ -0,0 +1,174 @@
|
|||||||
|
pub ed25519 2022-05-27 [C]
|
||||||
|
4020459E58C1A52511F5399113F703E6C11CF6F0
|
||||||
|
uid Carlos Eduardo Maiolino <carlos@maiolino.me>
|
||||||
|
uid Carlos Eduardo Maiolino <cmaiolino@redhat.com>
|
||||||
|
uid Carlos Eduardo Maiolino <cem@kernel.org>
|
||||||
|
sub ed25519 2022-05-27 [A]
|
||||||
|
36C5DFE1ECA79D1D444FDD904E5621A566959599
|
||||||
|
sub ed25519 2022-05-27 [S]
|
||||||
|
FA406E206AFF7873897C6864B45618C36A24FD23
|
||||||
|
sub cv25519 2022-05-27 [E]
|
||||||
|
5AE98D09B21AFBDE62EE571EE01E05EA81B10D5C
|
||||||
|
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
=n3Wp
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
7
SOURCES/xfsdump-3.1.12.tar.sign
Normal file
7
SOURCES/xfsdump-3.1.12.tar.sign
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iIUEABYIAC0WIQT6QG4gav94c4l8aGS0VhjDaiT9IwUCY5xOnw8cY2VtQGtlcm5l
|
||||||
|
bC5vcmcACgkQtFYYw2ok/SPdWgD/d0baJ+/kZ5vnbeIBzr85KIyckRW+N3S71RRU
|
||||||
|
zYUADv8BAO8YSt8MH3vdCfSLC7Zp6E1UCwFgiiXApjI3nHCobsoO
|
||||||
|
=R/Bu
|
||||||
|
-----END PGP SIGNATURE-----
|
@ -1,26 +1,22 @@
|
|||||||
Summary: Administrative utilities for the XFS filesystem
|
Summary: Backup and restore utilities for the XFS filesystem
|
||||||
Name: xfsdump
|
Name: xfsdump
|
||||||
Version: 3.1.8
|
Version: 3.1.12
|
||||||
Release: 7%{?dist}
|
Release: 4%{?dist}
|
||||||
# Licensing based on generic "GNU GENERAL PUBLIC LICENSE"
|
# Licensing based on generic "GNU GENERAL PUBLIC LICENSE"
|
||||||
# in source, with no mention of version.
|
# in source, with no mention of version.
|
||||||
License: GPL+
|
License: GPL+
|
||||||
Group: System Environment/Base
|
Source0: http://kernel.org/pub/linux/utils/fs/xfs/%{name}/%{name}-%{version}.tar.xz
|
||||||
URL: http://oss.sgi.com/projects/xfs/
|
Source1: http://kernel.org/pub/linux/utils/fs/xfs/%{name}/%{name}-%{version}.tar.sign
|
||||||
Source0: http://kernel.org/pub/linux/utils/fs/xfs/%{name}/%{name}-%{version}.tar.xz
|
Source2: https://git.kernel.org/pub/scm/docs/kernel/pgpkeys.git/plain/keys/13F703E6C11CF6F0.asc
|
||||||
Patch0: 0001-xfsdump-Revert-xfsdump-handle-bind-mount-targets.patch
|
BuildRequires: make
|
||||||
Patch1: 0002-xfsdump-intercept-bind-mount-targets.patch
|
BuildRequires: gcc
|
||||||
Patch2: 0003-for-next-xfsrestore-fix-rootdir-due-to-xfsdump-bulkstat-misus.patch
|
BuildRequires: libtool, gettext, gawk
|
||||||
Patch3: 0004-v3.1.9-common-types.h-Wrap-define-UUID_STR_LEN-36-in-ifndef.patch
|
BuildRequires: xfsprogs-devel, libuuid-devel, libattr-devel ncurses-devel
|
||||||
Patch4: 0005-v3.1.12-xfsrestore-fix-on-media-inventory-media-unpacking.patch
|
BuildRequires: gnupg2, xz
|
||||||
Patch5: 0006-v3.1.12-xfsrestore-fix-on-media-inventory-stream-unpacking.patch
|
Requires: xfsprogs >= 2.6.30, attr >= 2.0.0
|
||||||
Patch6: 0007-v3.1.12-xfsdump-fix-on-media-inventory-stream-packing.patch
|
|
||||||
Patch7: 0008-v3.1.12-xfsrestore-untangle-inventory-unpacking-logic.patch
|
Patch0: 0001-for-next-xfsrestore-fix-rootdir-due-to-xfsdump-bulkstat-misus.patch
|
||||||
Patch8: 0009-v3.1.13-xfsrestore-suggest-x-rather-than-assert-for-false-ro.patch
|
Patch1: 0002-v3.1.13-xfsrestore-suggest-x-rather-than-assert-for-false-ro.patch
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
|
||||||
BuildRequires: libtool, gettext, gawk
|
|
||||||
BuildRequires: xfsprogs-devel, libuuid-devel, libattr-devel ncurses-devel
|
|
||||||
Requires: xfsprogs >= 2.6.30, attr >= 2.0.0
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
The xfsdump package contains xfsdump, xfsrestore and a number of
|
The xfsdump package contains xfsdump, xfsrestore and a number of
|
||||||
@ -40,16 +36,8 @@ be layered on top of the full backup. Single files and directory
|
|||||||
subtrees may be restored from full or partial backups.
|
subtrees may be restored from full or partial backups.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
xzcat '%{SOURCE0}' | %{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data=-
|
||||||
%patch0 -p1
|
%autosetup -p1
|
||||||
%patch1 -p1
|
|
||||||
%patch2 -p1
|
|
||||||
%patch3 -p1
|
|
||||||
%patch4 -p1
|
|
||||||
%patch5 -p1
|
|
||||||
%patch6 -p1
|
|
||||||
%patch7 -p1
|
|
||||||
%patch8 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%configure
|
%configure
|
||||||
@ -63,7 +51,6 @@ make DIST_ROOT=$RPM_BUILD_ROOT install
|
|||||||
rm -rf $RPM_BUILD_ROOT/%{_datadir}/doc/xfsdump/
|
rm -rf $RPM_BUILD_ROOT/%{_datadir}/doc/xfsdump/
|
||||||
|
|
||||||
# Bit of a hack to move files from /sbin to /usr/sbin
|
# Bit of a hack to move files from /sbin to /usr/sbin
|
||||||
(cd $RPM_BUILD_ROOT/%{_sbindir}; rm xfsdump xfsrestore)
|
|
||||||
(cd $RPM_BUILD_ROOT/%{_sbindir}; mv ../../sbin/xfsdump .)
|
(cd $RPM_BUILD_ROOT/%{_sbindir}; mv ../../sbin/xfsdump .)
|
||||||
(cd $RPM_BUILD_ROOT/%{_sbindir}; mv ../../sbin/xfsrestore .)
|
(cd $RPM_BUILD_ROOT/%{_sbindir}; mv ../../sbin/xfsrestore .)
|
||||||
|
|
||||||
@ -72,34 +59,71 @@ mkdir -p $RPM_BUILD_ROOT/%{_sharedstatedir}/xfsdump/inventory
|
|||||||
|
|
||||||
%find_lang %{name}
|
%find_lang %{name}
|
||||||
|
|
||||||
%clean
|
|
||||||
rm -rf $RPM_BUILD_ROOT
|
|
||||||
|
|
||||||
%files -f %{name}.lang
|
%files -f %{name}.lang
|
||||||
%defattr(-,root,root)
|
|
||||||
%doc README doc/COPYING doc/CHANGES doc/README.xfsdump doc/xfsdump_ts.txt
|
%doc README doc/COPYING doc/CHANGES doc/README.xfsdump doc/xfsdump_ts.txt
|
||||||
%{_mandir}/man8/*
|
%{_mandir}/man8/*
|
||||||
%{_sbindir}/*
|
%{_sbindir}/*
|
||||||
%{_sharedstatedir}/xfsdump/inventory
|
%{_sharedstatedir}/xfsdump/inventory
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Thu Oct 05 2023 Pavel Reichl <preichl@redhat.com> - 3.1.8-7
|
* Fri Oct 06 2023 Pavel Reichl <preichl@redhat.com> - 3.1.12-4
|
||||||
- xfsdump/xfsrestore: suggest recovery for false roots may be possible using -x
|
- xfsdump/xfsrestore: suggest recovery for false roots may be possible using -x
|
||||||
- Related: RHEL-11883
|
- Related: RHEL-8000
|
||||||
|
|
||||||
* Tue Jun 20 2023 Pavel Reichl <preichl@redhat.com> - 3.1.8-6
|
* Mon Jun 26 2023 Pavel Reichl <preichl@redhat.com> - 3.1.12-3
|
||||||
- xfsdump: restoring inventory prevents non-directory files being restored from tape
|
- xfsdump: restoring inventory prevents non-directory files being restored from tape,
|
||||||
- related: bz#2166554
|
- actually fixed by rebase to 3.1.12
|
||||||
|
- related: bz#2166557
|
||||||
* Mon Jun 19 2023 Pavel Reichl <preichl@redhat.com> - 3.1.8-5
|
|
||||||
- xfsrestore: Files from the backup go to orphanage dir because of xfsdump issue
|
- xfsrestore: Files from the backup go to orphanage dir because of xfsdump issue
|
||||||
- related: bz#2055289
|
- related: bz#2034327
|
||||||
|
|
||||||
* Fri Feb 11 2022 Eric Sandeen <sandeen@redhat.com> 3.1.8-4
|
* Tue Apr 18 2023 Pavel Reichl <preichl@redhat.com> - 3.1.12-2
|
||||||
- Fix bind mount vs root inode problems (#2020494)
|
- rebuilt, Fix wrongly associated bugzilla
|
||||||
|
Related: rhbz#2181660
|
||||||
|
|
||||||
* Wed May 15 2019 Eric Sandeen <sandeen@redhat.com> 3.1.8-3
|
* Mon Apr 17 2023 Pavel Reichl <preichl@redhat.com> - 3.1.12-1
|
||||||
- Bump revision for test infrastructure (#1681970)
|
- 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
|
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.8-2
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||||
|
Loading…
Reference in New Issue
Block a user