!11 update version to 3.1.11-1

From: @volcanodragon 
Reviewed-by: @liuzhiqiang26 
Signed-off-by: @liuzhiqiang26
This commit is contained in:
openeuler-ci-bot 2022-11-02 10:38:19 +00:00 committed by Gitee
commit a9ea9e50fc
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
5 changed files with 5 additions and 180 deletions

View File

@ -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

View File

@ -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

Binary file not shown.

Binary file not shown.

View File

@ -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