!11 update version to 3.1.11-1
From: @volcanodragon Reviewed-by: @liuzhiqiang26 Signed-off-by: @liuzhiqiang26
This commit is contained in:
commit
a9ea9e50fc
@ -1,71 +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] 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>
|
|
||||||
---
|
|
||||||
dump/content.c | 21 ++-------------------
|
|
||||||
1 file changed, 2 insertions(+), 19 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/dump/content.c b/dump/content.c
|
|
||||||
index 75b7922..a1a114c 100644
|
|
||||||
--- a/dump/content.c
|
|
||||||
+++ b/dump/content.c
|
|
||||||
@@ -1382,17 +1382,10 @@ baseuuidbypass:
|
|
||||||
}
|
|
||||||
|
|
||||||
/* figure out the ino for the root directory of the fs
|
|
||||||
- * and get its struct xfs_bstat 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;
|
|
||||||
- struct xfs_fsop_bulkreq bulkreq;
|
|
||||||
-
|
|
||||||
- /* Get the inode of the mount point */
|
|
||||||
rval = fstat64(sc_fsfd, &rootstat);
|
|
||||||
if (rval) {
|
|
||||||
mlog(MLOG_NORMAL, _(
|
|
||||||
@@ -1404,21 +1397,11 @@ baseuuidbypass:
|
|
||||||
(struct xfs_bstat *)calloc(1, sizeof(struct xfs_bstat));
|
|
||||||
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()
|
|
||||||
--
|
|
||||||
2.35.3
|
|
||||||
|
|
||||||
@ -1,105 +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] 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>
|
|
||||||
---
|
|
||||||
dump/content.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
1 file changed, 62 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/dump/content.c b/dump/content.c
|
|
||||||
index a1a114c..6188b25 100644
|
|
||||||
--- a/dump/content.c
|
|
||||||
+++ b/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[],
|
|
||||||
@@ -1393,6 +1447,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 =
|
|
||||||
(struct xfs_bstat *)calloc(1, sizeof(struct xfs_bstat));
|
|
||||||
assert(sc_rootxfsstatp);
|
|
||||||
--
|
|
||||||
2.35.3
|
|
||||||
|
|
||||||
BIN
xfsdump-3.1.11.tar.xz
Normal file
BIN
xfsdump-3.1.11.tar.xz
Normal file
Binary file not shown.
Binary file not shown.
@ -1,12 +1,10 @@
|
|||||||
Name: xfsdump
|
Name: xfsdump
|
||||||
Version: 3.1.9
|
Version: 3.1.11
|
||||||
Release: 3
|
Release: 1
|
||||||
Summary: Tools create and restore for the XFS filesystem
|
Summary: Tools create and restore for the XFS filesystem
|
||||||
License: GPLv2
|
License: GPLv2
|
||||||
URL: http://xfs.org
|
URL: http://xfs.org
|
||||||
Source0: http://kernel.org/pub/linux/utils/fs/xfs/%{name}/%{name}-%{version}.tar.xz
|
Source0: http://kernel.org/pub/linux/utils/fs/xfs/%{name}/%{name}-%{version}.tar.xz
|
||||||
Patch01: 0001-xfsdump-Revert-xfsdump-handle-bind-mount-targets.patch
|
|
||||||
Patch02: 0002-xfsdump-intercept-bind-mount-targets.patch
|
|
||||||
|
|
||||||
BuildRequires: libtool, gettext, gawk
|
BuildRequires: libtool, gettext, gawk
|
||||||
BuildRequires: xfsprogs-devel, ncurses-devel, libuuid-devel, libattr-devel
|
BuildRequires: xfsprogs-devel, ncurses-devel, libuuid-devel, libattr-devel
|
||||||
@ -50,6 +48,9 @@ mkdir -p %{buildroot}/%{_sharedstatedir}/xfsdump/inventory
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Oct 20 2022 yangchenguang <yangchenguang@uniontech.com> - 3.1.11-1
|
||||||
|
- update xfsdump version to 3.1.11-1
|
||||||
|
|
||||||
* Thu Sep 29 2022 Jun Yang <jun.yang@suse.com> - 3.1.9-3
|
* Thu Sep 29 2022 Jun Yang <jun.yang@suse.com> - 3.1.9-3
|
||||||
- Add patches to fix failed cases of xfstest xfs/544,545
|
- Add patches to fix failed cases of xfstest xfs/544,545
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user