xfsdump: New usptream release
Fix the root-inode-vs-bind-mount problem Resolves: rhbz#2034324
This commit is contained in:
parent
b93ead616d
commit
ac2d6de618
2
.gitignore
vendored
2
.gitignore
vendored
@ -9,3 +9,5 @@ xfsdump-3.0.4.tar.gz
|
|||||||
/xfsdump-3.1.6.tar.gz
|
/xfsdump-3.1.6.tar.gz
|
||||||
/xfsdump-3.1.8.tar.xz
|
/xfsdump-3.1.8.tar.xz
|
||||||
/xfsdump-3.1.9.tar.xz
|
/xfsdump-3.1.9.tar.xz
|
||||||
|
/xfsdump-3.1.10.tar.sign
|
||||||
|
/xfsdump-3.1.10.tar.xz
|
||||||
|
185
20AE1692E13DDEE0.asc
Normal file
185
20AE1692E13DDEE0.asc
Normal file
@ -0,0 +1,185 @@
|
|||||||
|
pub rsa4096 2011-11-03 [SC]
|
||||||
|
2B8185919E8D248981869DED20AE1692E13DDEE0
|
||||||
|
uid Eric R. Sandeen <sandeen@sandeen.net>
|
||||||
|
uid Eric R. Sandeen <sandeen@redhat.com>
|
||||||
|
sub rsa4096 2011-11-03 [E]
|
||||||
|
048CA40C8F5B5507E3A6CD6BE2C297037B26BEB4
|
||||||
|
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
4NMMCC8gkONe4tek
|
||||||
|
=EFoy
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
3
sources
3
sources
@ -1 +1,2 @@
|
|||||||
SHA512 (xfsdump-3.1.9.tar.xz) = e8f9811d16fc06ab49fe2c109de0546c989575eca6e68b579c6d219a745f935952020069f58b357c5c87b944c5097ca2894466d328d09f06beb8a55880142351
|
SHA512 (xfsdump-3.1.10.tar.sign) = abd8cef57d1f47337c9f4b3b8981ddd4108bf649decfb0df46f61fecf5663effa6fb0b85d40ed876220b6a06b0ecb546e7fa39a437b6b1e56f8eb8b6ae89a709
|
||||||
|
SHA512 (xfsdump-3.1.10.tar.xz) = 8a1b671b22fffb5d2eac45d5fd7a2948c137b3ca21fde06779cff13fc6eaa27286876f56715f2eeb82ce107278d763028474260a54a8fec722e5a5d7c5875c9a
|
||||||
|
@ -1,284 +0,0 @@
|
|||||||
commit b1d6979f1fae82acc79d27cf0add4d55da6d83cc
|
|
||||||
Author: Kyle McMartin <kmcmarti@redhat.com>
|
|
||||||
Date: Tue Apr 8 10:35:34 2014 +1000
|
|
||||||
|
|
||||||
remove ancient sys_getdents code paths
|
|
||||||
|
|
||||||
Everything since 2.4.1 has supported getdents64... so let's remove all
|
|
||||||
the legacy code paths to handle it and just rely on getdents64 existing
|
|
||||||
everywhere. Also re-indent the function to not look entirely awful.
|
|
||||||
|
|
||||||
Signed-off-by: Kyle McMartin <kmcmarti@redhat.com>
|
|
||||||
Reviewed-by: Christoph Hellwig <hch@lst.de>
|
|
||||||
Signed-off-by: Dave Chinner <david@fromorbit.com>
|
|
||||||
|
|
||||||
diff --git a/common/getdents.c b/common/getdents.c
|
|
||||||
index 49d0d03..957bb5a 100644
|
|
||||||
--- a/common/getdents.c
|
|
||||||
+++ b/common/getdents.c
|
|
||||||
@@ -35,47 +35,13 @@
|
|
||||||
|
|
||||||
#include <linux/posix_types.h>
|
|
||||||
|
|
||||||
-/* For Linux we need a special version of this file since the
|
|
||||||
- definition of `struct dirent' is not the same for the kernel and
|
|
||||||
- the libc. There is one additional field which might be introduced
|
|
||||||
- in the kernel structure in the future.
|
|
||||||
-
|
|
||||||
- Here is the kernel definition of `struct dirent' as of 2.1.20: */
|
|
||||||
-
|
|
||||||
-struct kernel_dirent
|
|
||||||
- {
|
|
||||||
- long int d_ino;
|
|
||||||
- __kernel_off_t d_off;
|
|
||||||
- unsigned short int d_reclen;
|
|
||||||
- char d_name[256];
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
-struct kernel_dirent64
|
|
||||||
- {
|
|
||||||
- uint64_t d_ino;
|
|
||||||
- int64_t d_off;
|
|
||||||
- unsigned short int d_reclen;
|
|
||||||
- unsigned char d_type;
|
|
||||||
- char d_name[256];
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
-#define DIRENT_SET_DP_INO(dp, value) (dp)->d_ino = (value)
|
|
||||||
-
|
|
||||||
-#define __set_errno(e) (errno = (e))
|
|
||||||
-
|
|
||||||
-int __have_no_getdents64;
|
|
||||||
-
|
|
||||||
-#ifdef __NR_getdents64
|
|
||||||
-# define __SYS_GETDENTS64(fd, buf, len) (syscall(SYS_getdents64, fd, buf, len))
|
|
||||||
-#else
|
|
||||||
-# define __SYS_GETDENTS64(fd, buf, len) ({ __set_errno(ENOSYS); -1; })
|
|
||||||
-#endif
|
|
||||||
-
|
|
||||||
-#ifdef __NR_getdents
|
|
||||||
-# define __SYS_GETDENTS(fd, buf, len) (syscall(SYS_getdents, fd, buf, len))
|
|
||||||
-#else
|
|
||||||
-# define __SYS_GETDENTS(fd, buf, len) ({ __set_errno(ENOSYS); -1; })
|
|
||||||
-#endif
|
|
||||||
+struct kernel_dirent64 {
|
|
||||||
+ uint64_t d_ino;
|
|
||||||
+ int64_t d_off;
|
|
||||||
+ unsigned short int d_reclen;
|
|
||||||
+ unsigned char d_type;
|
|
||||||
+ char d_name[256];
|
|
||||||
+};
|
|
||||||
|
|
||||||
/* The problem here is that we cannot simply read the next NBYTES
|
|
||||||
bytes. We need to take the additional field into account. We use
|
|
||||||
@@ -85,148 +51,74 @@ int __have_no_getdents64;
|
|
||||||
reasonable number of bytes to read. If we should be wrong, we can
|
|
||||||
reset the file descriptor. In practice the kernel is limiting the
|
|
||||||
amount of data returned much more then the reduced buffer size. */
|
|
||||||
-int
|
|
||||||
-getdents_wrap (int fd, char *buf, size_t nbytes)
|
|
||||||
+int getdents_wrap(int fd, char *buf, size_t nbytes)
|
|
||||||
{
|
|
||||||
- struct dirent *dp;
|
|
||||||
- off64_t last_offset = -1;
|
|
||||||
- ssize_t retval;
|
|
||||||
-
|
|
||||||
- if (!__have_no_getdents64)
|
|
||||||
- {
|
|
||||||
- int saved_errno = errno;
|
|
||||||
- char *kbuf = buf;
|
|
||||||
- size_t kbytes = nbytes;
|
|
||||||
- if (offsetof (struct dirent, d_name)
|
|
||||||
- < offsetof (struct kernel_dirent64, d_name)
|
|
||||||
- && nbytes <= sizeof (struct dirent))
|
|
||||||
- {
|
|
||||||
- kbytes = nbytes + offsetof (struct kernel_dirent64, d_name)
|
|
||||||
- - offsetof (struct dirent, d_name);
|
|
||||||
- kbuf = alloca(kbytes);
|
|
||||||
+ struct dirent *dp;
|
|
||||||
+ struct kernel_dirent64 *kdp;
|
|
||||||
+ off64_t last_offset = -1;
|
|
||||||
+ ssize_t retval;
|
|
||||||
+ char *kbuf = buf;
|
|
||||||
+ size_t kbytes = nbytes;
|
|
||||||
+ const size_t size_diff = (offsetof(struct kernel_dirent64, d_name)
|
|
||||||
+ - offsetof(struct dirent, d_name));
|
|
||||||
+
|
|
||||||
+ if (offsetof(struct dirent, d_name)
|
|
||||||
+ < offsetof(struct kernel_dirent64, d_name)
|
|
||||||
+ && nbytes <= sizeof(struct dirent)) {
|
|
||||||
+ kbytes = nbytes + size_diff;
|
|
||||||
+ kbuf = alloca(kbytes);
|
|
||||||
}
|
|
||||||
- retval = __SYS_GETDENTS64(fd, kbuf, kbytes);
|
|
||||||
- if (retval != -1)
|
|
||||||
- {
|
|
||||||
- struct kernel_dirent64 *kdp;
|
|
||||||
- const size_t size_diff = (offsetof (struct kernel_dirent64, d_name)
|
|
||||||
- - offsetof (struct dirent, d_name));
|
|
||||||
-
|
|
||||||
- /* If the structure returned by the kernel is identical to what we
|
|
||||||
- need, don't do any conversions. */
|
|
||||||
- if (offsetof (struct dirent, d_name)
|
|
||||||
- == offsetof (struct kernel_dirent64, d_name)
|
|
||||||
- && sizeof (dp->d_ino) == sizeof (kdp->d_ino)
|
|
||||||
- && sizeof (dp->d_off) == sizeof (kdp->d_off))
|
|
||||||
- return retval;
|
|
||||||
-
|
|
||||||
- dp = (struct dirent *)buf;
|
|
||||||
- kdp = (struct kernel_dirent64 *) kbuf;
|
|
||||||
- while ((char *) kdp < kbuf + retval)
|
|
||||||
- {
|
|
||||||
- const size_t alignment = __alignof__ (struct dirent);
|
|
||||||
- /* Since kdp->d_reclen is already aligned for the kernel
|
|
||||||
- structure this may compute a value that is bigger
|
|
||||||
- than necessary. */
|
|
||||||
- size_t old_reclen = kdp->d_reclen;
|
|
||||||
- size_t new_reclen = ((old_reclen - size_diff + alignment - 1)
|
|
||||||
- & ~(alignment - 1));
|
|
||||||
- uint64_t d_ino = kdp->d_ino;
|
|
||||||
- int64_t d_off = kdp->d_off;
|
|
||||||
- unsigned char d_type = kdp->d_type;
|
|
||||||
|
|
||||||
- DIRENT_SET_DP_INO (dp, d_ino);
|
|
||||||
- dp->d_off = d_off;
|
|
||||||
- if ((sizeof (dp->d_ino) != sizeof (kdp->d_ino)
|
|
||||||
- && dp->d_ino != d_ino)
|
|
||||||
- || (sizeof (dp->d_off) != sizeof (kdp->d_off)
|
|
||||||
- && dp->d_off != d_off))
|
|
||||||
- {
|
|
||||||
- /* Overflow. If there was at least one entry
|
|
||||||
- before this one, return them without error,
|
|
||||||
- otherwise signal overflow. */
|
|
||||||
- if (last_offset != -1)
|
|
||||||
- {
|
|
||||||
- lseek64 (fd, last_offset, SEEK_SET);
|
|
||||||
- return (char *) dp - buf;
|
|
||||||
- }
|
|
||||||
- __set_errno (EOVERFLOW);
|
|
||||||
- return -1;
|
|
||||||
+ retval = syscall(SYS_getdents64, fd, kbuf, kbytes);
|
|
||||||
+ if (retval != -1)
|
|
||||||
+ return retval;
|
|
||||||
+
|
|
||||||
+ /* If the structure returned by the kernel is identical to what we
|
|
||||||
+ need, don't do any conversions. */
|
|
||||||
+ if (offsetof(struct dirent, d_name)
|
|
||||||
+ == offsetof(struct kernel_dirent64, d_name)
|
|
||||||
+ && sizeof(dp->d_ino) == sizeof(kdp->d_ino)
|
|
||||||
+ && sizeof(dp->d_off) == sizeof(kdp->d_off))
|
|
||||||
+ return retval;
|
|
||||||
+
|
|
||||||
+ dp = (struct dirent *)buf;
|
|
||||||
+ kdp = (struct kernel_dirent64 *)kbuf;
|
|
||||||
+ while ((char *)kdp < kbuf + retval) {
|
|
||||||
+ const size_t alignment = __alignof__(struct dirent);
|
|
||||||
+ /* Since kdp->d_reclen is already aligned for the kernel
|
|
||||||
+ structure this may compute a value that is bigger
|
|
||||||
+ than necessary. */
|
|
||||||
+ size_t old_reclen = kdp->d_reclen;
|
|
||||||
+ size_t new_reclen = ((old_reclen - size_diff + alignment - 1)
|
|
||||||
+ & ~(alignment - 1));
|
|
||||||
+ uint64_t d_ino = kdp->d_ino;
|
|
||||||
+ int64_t d_off = kdp->d_off;
|
|
||||||
+ unsigned char d_type = kdp->d_type;
|
|
||||||
+
|
|
||||||
+ dp->d_ino = d_ino;
|
|
||||||
+ dp->d_off = d_off;
|
|
||||||
+ if ((sizeof(dp->d_ino) != sizeof(kdp->d_ino))
|
|
||||||
+ || (sizeof(dp->d_off) != sizeof(kdp->d_off))) {
|
|
||||||
+ /* Overflow. If there was at least one entry
|
|
||||||
+ before this one, return them without error,
|
|
||||||
+ otherwise signal overflow. */
|
|
||||||
+ if (last_offset != -1) {
|
|
||||||
+ lseek64(fd, last_offset, SEEK_SET);
|
|
||||||
+ return (char *)dp - buf;
|
|
||||||
+ }
|
|
||||||
+ errno = EOVERFLOW;
|
|
||||||
+ return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
- last_offset = d_off;
|
|
||||||
- dp->d_reclen = new_reclen;
|
|
||||||
- dp->d_type = d_type;
|
|
||||||
- memmove (dp->d_name, kdp->d_name,
|
|
||||||
- old_reclen - offsetof (struct kernel_dirent64, d_name));
|
|
||||||
+ last_offset = d_off;
|
|
||||||
+ dp->d_reclen = new_reclen;
|
|
||||||
+ dp->d_type = d_type;
|
|
||||||
+ memmove(dp->d_name, kdp->d_name,
|
|
||||||
+ old_reclen - offsetof(struct kernel_dirent64, d_name));
|
|
||||||
|
|
||||||
- dp = (struct dirent *) ((char *) dp + new_reclen);
|
|
||||||
- kdp = (struct kernel_dirent64 *) ((char *) kdp + old_reclen);
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- return (char *) dp - buf;
|
|
||||||
+ dp = (struct dirent *)((char *)dp + new_reclen);
|
|
||||||
+ kdp = (struct kernel_dirent64 *)((char *)kdp + old_reclen);
|
|
||||||
}
|
|
||||||
|
|
||||||
- __set_errno (saved_errno);
|
|
||||||
- __have_no_getdents64 = 1;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- /* fallback to getdents */
|
|
||||||
- {
|
|
||||||
- size_t red_nbytes;
|
|
||||||
- struct kernel_dirent *skdp, *kdp;
|
|
||||||
- const size_t size_diff = (offsetof (struct dirent, d_name)
|
|
||||||
- - offsetof (struct kernel_dirent, d_name));
|
|
||||||
-
|
|
||||||
- red_nbytes = MIN (nbytes
|
|
||||||
- - ((nbytes / (offsetof (struct dirent, d_name) + 14))
|
|
||||||
- * size_diff),
|
|
||||||
- nbytes - size_diff);
|
|
||||||
-
|
|
||||||
- dp = (struct dirent *) buf;
|
|
||||||
- skdp = kdp = alloca (red_nbytes);
|
|
||||||
-
|
|
||||||
- retval = __SYS_GETDENTS(fd, kdp, red_nbytes);
|
|
||||||
- if (retval == -1)
|
|
||||||
- return -1;
|
|
||||||
-
|
|
||||||
- while ((char *) kdp < (char *) skdp + retval)
|
|
||||||
- {
|
|
||||||
- const size_t alignment = __alignof__ (struct dirent);
|
|
||||||
- /* Since kdp->d_reclen is already aligned for the kernel structure
|
|
||||||
- this may compute a value that is bigger than necessary. */
|
|
||||||
- size_t new_reclen = ((kdp->d_reclen + size_diff + alignment - 1)
|
|
||||||
- & ~(alignment - 1));
|
|
||||||
- if ((char *) dp + new_reclen > buf + nbytes)
|
|
||||||
- {
|
|
||||||
- /* Our heuristic failed. We read too many entries. Reset
|
|
||||||
- the stream. */
|
|
||||||
- assert (last_offset != -1);
|
|
||||||
- lseek64 (fd, last_offset, SEEK_SET);
|
|
||||||
-
|
|
||||||
- if ((char *) dp == buf)
|
|
||||||
- {
|
|
||||||
- /* The buffer the user passed in is too small to hold even
|
|
||||||
- one entry. */
|
|
||||||
- __set_errno (EINVAL);
|
|
||||||
- return -1;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- break;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- last_offset = kdp->d_off;
|
|
||||||
- DIRENT_SET_DP_INO(dp, kdp->d_ino);
|
|
||||||
- dp->d_off = kdp->d_off;
|
|
||||||
- dp->d_reclen = new_reclen;
|
|
||||||
- dp->d_type = DT_UNKNOWN;
|
|
||||||
- memcpy (dp->d_name, kdp->d_name,
|
|
||||||
- kdp->d_reclen - offsetof (struct kernel_dirent, d_name));
|
|
||||||
-
|
|
||||||
- dp = (struct dirent *) ((char *) dp + new_reclen);
|
|
||||||
- kdp = (struct kernel_dirent *) (((char *) kdp) + kdp->d_reclen);
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- return (char *) dp - buf;
|
|
||||||
+ return (char *)dp - buf;
|
|
||||||
}
|
|
@ -1,214 +0,0 @@
|
|||||||
commit 9ed517b63df35876681e8883388fbf154afda0c1
|
|
||||||
Author: Kyle McMartin <kmcmarti@redhat.com>
|
|
||||||
Date: Tue Apr 8 10:33:57 2014 +1000
|
|
||||||
|
|
||||||
xfsdump: getdents.c: clean up ifdef-hell around sys_getdents
|
|
||||||
|
|
||||||
Remove the ifdef-hell imported from glibc around getdents64. Everything
|
|
||||||
since 2.4.1 supports things properly and this seems like a sensible
|
|
||||||
clean up, so lets just assume it exists and handle it by falling back
|
|
||||||
if not.
|
|
||||||
|
|
||||||
Additionally, if the old getdents syscall doesn't exist, just stub out
|
|
||||||
the actual syscall and return ENOSYS.
|
|
||||||
|
|
||||||
Signed-off-by: Kyle McMartin <kmcmarti@redhat.com>
|
|
||||||
Reviewed-by: Christoph Hellwig <hch@lst.de>
|
|
||||||
Signed-off-by: Dave Chinner <david@fromorbit.com>
|
|
||||||
|
|
||||||
diff --git a/common/getdents.c b/common/getdents.c
|
|
||||||
index e9ba25a..49d0d03 100644
|
|
||||||
--- a/common/getdents.c
|
|
||||||
+++ b/common/getdents.c
|
|
||||||
@@ -35,44 +35,6 @@
|
|
||||||
|
|
||||||
#include <linux/posix_types.h>
|
|
||||||
|
|
||||||
-/* Copied from kernel-features.h for __ASSUME_GETDENTS64_SYSCALL */
|
|
||||||
-#ifndef __LINUX_KERNEL_VERSION
|
|
||||||
-/* We assume the worst; all kernels should be supported. */
|
|
||||||
-# define __LINUX_KERNEL_VERSION 0
|
|
||||||
-#endif
|
|
||||||
-/* The getdents64 syscall was introduced in 2.4.0-test7. We test for
|
|
||||||
- 2.4.1 for the earliest version we know the syscall is available. */
|
|
||||||
-#if __LINUX_KERNEL_VERSION >= 132097
|
|
||||||
-# define __ASSUME_GETDENTS64_SYSCALL 1
|
|
||||||
-#endif
|
|
||||||
-/* There are an infinite number of PA-RISC kernel versions numbered
|
|
||||||
- 2.4.0. But they've not really been released as such. We require
|
|
||||||
- and expect the final version here. */
|
|
||||||
-#ifdef __hppa__
|
|
||||||
-# define __ASSUME_GETDENTS64_SYSCALL 1
|
|
||||||
-#endif
|
|
||||||
-
|
|
||||||
-#ifndef __set_errno
|
|
||||||
-#define __set_errno(e) (errno = (e))
|
|
||||||
-#endif
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-#ifdef __NR_getdents64
|
|
||||||
-# ifndef __ASSUME_GETDENTS64_SYSCALL
|
|
||||||
-# ifndef __GETDENTS
|
|
||||||
-/* The variable is shared between all *getdents* calls. */
|
|
||||||
-int __have_no_getdents64;
|
|
||||||
-# else
|
|
||||||
-extern int __have_no_getdents64;
|
|
||||||
-# endif
|
|
||||||
-# endif
|
|
||||||
-/* Earlier versions of glibc don't define SYS_getdents64 at all */
|
|
||||||
-# ifndef SYS_getdents64
|
|
||||||
-# define SYS_getdents64 __NR_getdents64
|
|
||||||
-# endif
|
|
||||||
-#endif
|
|
||||||
-
|
|
||||||
-
|
|
||||||
/* For Linux we need a special version of this file since the
|
|
||||||
definition of `struct dirent' is not the same for the kernel and
|
|
||||||
the libc. There is one additional field which might be introduced
|
|
||||||
@@ -97,11 +59,22 @@ struct kernel_dirent64
|
|
||||||
char d_name[256];
|
|
||||||
};
|
|
||||||
|
|
||||||
-#ifndef DIRENT_TYPE
|
|
||||||
-# define DIRENT_TYPE struct dirent
|
|
||||||
+#define DIRENT_SET_DP_INO(dp, value) (dp)->d_ino = (value)
|
|
||||||
+
|
|
||||||
+#define __set_errno(e) (errno = (e))
|
|
||||||
+
|
|
||||||
+int __have_no_getdents64;
|
|
||||||
+
|
|
||||||
+#ifdef __NR_getdents64
|
|
||||||
+# define __SYS_GETDENTS64(fd, buf, len) (syscall(SYS_getdents64, fd, buf, len))
|
|
||||||
+#else
|
|
||||||
+# define __SYS_GETDENTS64(fd, buf, len) ({ __set_errno(ENOSYS); -1; })
|
|
||||||
#endif
|
|
||||||
-#ifndef DIRENT_SET_DP_INO
|
|
||||||
-# define DIRENT_SET_DP_INO(dp, value) (dp)->d_ino = (value)
|
|
||||||
+
|
|
||||||
+#ifdef __NR_getdents
|
|
||||||
+# define __SYS_GETDENTS(fd, buf, len) (syscall(SYS_getdents, fd, buf, len))
|
|
||||||
+#else
|
|
||||||
+# define __SYS_GETDENTS(fd, buf, len) ({ __set_errno(ENOSYS); -1; })
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* The problem here is that we cannot simply read the next NBYTES
|
|
||||||
@@ -115,50 +88,43 @@ struct kernel_dirent64
|
|
||||||
int
|
|
||||||
getdents_wrap (int fd, char *buf, size_t nbytes)
|
|
||||||
{
|
|
||||||
- DIRENT_TYPE *dp;
|
|
||||||
+ struct dirent *dp;
|
|
||||||
off64_t last_offset = -1;
|
|
||||||
ssize_t retval;
|
|
||||||
|
|
||||||
-#ifdef __NR_getdents64
|
|
||||||
-# ifndef __ASSUME_GETDENTS64_SYSCALL
|
|
||||||
if (!__have_no_getdents64)
|
|
||||||
-# endif
|
|
||||||
{
|
|
||||||
-# ifndef __ASSUME_GETDENTS64_SYSCALL
|
|
||||||
int saved_errno = errno;
|
|
||||||
-# endif
|
|
||||||
char *kbuf = buf;
|
|
||||||
size_t kbytes = nbytes;
|
|
||||||
- if (offsetof (DIRENT_TYPE, d_name)
|
|
||||||
+ if (offsetof (struct dirent, d_name)
|
|
||||||
< offsetof (struct kernel_dirent64, d_name)
|
|
||||||
- && nbytes <= sizeof (DIRENT_TYPE))
|
|
||||||
+ && nbytes <= sizeof (struct dirent))
|
|
||||||
{
|
|
||||||
kbytes = nbytes + offsetof (struct kernel_dirent64, d_name)
|
|
||||||
- - offsetof (DIRENT_TYPE, d_name);
|
|
||||||
+ - offsetof (struct dirent, d_name);
|
|
||||||
kbuf = alloca(kbytes);
|
|
||||||
}
|
|
||||||
- retval = syscall(SYS_getdents64, fd, kbuf, kbytes);
|
|
||||||
-# ifndef __ASSUME_GETDENTS64_SYSCALL
|
|
||||||
- if (retval != -1 && errno != -EINVAL)
|
|
||||||
-# endif
|
|
||||||
+ retval = __SYS_GETDENTS64(fd, kbuf, kbytes);
|
|
||||||
+ if (retval != -1)
|
|
||||||
{
|
|
||||||
struct kernel_dirent64 *kdp;
|
|
||||||
const size_t size_diff = (offsetof (struct kernel_dirent64, d_name)
|
|
||||||
- - offsetof (DIRENT_TYPE, d_name));
|
|
||||||
+ - offsetof (struct dirent, d_name));
|
|
||||||
|
|
||||||
/* If the structure returned by the kernel is identical to what we
|
|
||||||
need, don't do any conversions. */
|
|
||||||
- if (offsetof (DIRENT_TYPE, d_name)
|
|
||||||
+ if (offsetof (struct dirent, d_name)
|
|
||||||
== offsetof (struct kernel_dirent64, d_name)
|
|
||||||
&& sizeof (dp->d_ino) == sizeof (kdp->d_ino)
|
|
||||||
&& sizeof (dp->d_off) == sizeof (kdp->d_off))
|
|
||||||
return retval;
|
|
||||||
|
|
||||||
- dp = (DIRENT_TYPE *)buf;
|
|
||||||
+ dp = (struct dirent *)buf;
|
|
||||||
kdp = (struct kernel_dirent64 *) kbuf;
|
|
||||||
while ((char *) kdp < kbuf + retval)
|
|
||||||
{
|
|
||||||
- const size_t alignment = __alignof__ (DIRENT_TYPE);
|
|
||||||
+ const size_t alignment = __alignof__ (struct dirent);
|
|
||||||
/* Since kdp->d_reclen is already aligned for the kernel
|
|
||||||
structure this may compute a value that is bigger
|
|
||||||
than necessary. */
|
|
||||||
@@ -194,41 +160,39 @@ getdents_wrap (int fd, char *buf, size_t nbytes)
|
|
||||||
memmove (dp->d_name, kdp->d_name,
|
|
||||||
old_reclen - offsetof (struct kernel_dirent64, d_name));
|
|
||||||
|
|
||||||
- dp = (DIRENT_TYPE *) ((char *) dp + new_reclen);
|
|
||||||
+ dp = (struct dirent *) ((char *) dp + new_reclen);
|
|
||||||
kdp = (struct kernel_dirent64 *) ((char *) kdp + old_reclen);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (char *) dp - buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
-# ifndef __ASSUME_GETDENTS64_SYSCALL
|
|
||||||
__set_errno (saved_errno);
|
|
||||||
__have_no_getdents64 = 1;
|
|
||||||
-# endif
|
|
||||||
}
|
|
||||||
-#endif
|
|
||||||
+
|
|
||||||
+ /* fallback to getdents */
|
|
||||||
{
|
|
||||||
size_t red_nbytes;
|
|
||||||
struct kernel_dirent *skdp, *kdp;
|
|
||||||
- const size_t size_diff = (offsetof (DIRENT_TYPE, d_name)
|
|
||||||
+ const size_t size_diff = (offsetof (struct dirent, d_name)
|
|
||||||
- offsetof (struct kernel_dirent, d_name));
|
|
||||||
|
|
||||||
red_nbytes = MIN (nbytes
|
|
||||||
- - ((nbytes / (offsetof (DIRENT_TYPE, d_name) + 14))
|
|
||||||
+ - ((nbytes / (offsetof (struct dirent, d_name) + 14))
|
|
||||||
* size_diff),
|
|
||||||
nbytes - size_diff);
|
|
||||||
|
|
||||||
- dp = (DIRENT_TYPE *) buf;
|
|
||||||
+ dp = (struct dirent *) buf;
|
|
||||||
skdp = kdp = alloca (red_nbytes);
|
|
||||||
|
|
||||||
- retval = syscall(SYS_getdents, fd, kdp, red_nbytes);
|
|
||||||
-
|
|
||||||
+ retval = __SYS_GETDENTS(fd, kdp, red_nbytes);
|
|
||||||
if (retval == -1)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
while ((char *) kdp < (char *) skdp + retval)
|
|
||||||
{
|
|
||||||
- const size_t alignment = __alignof__ (DIRENT_TYPE);
|
|
||||||
+ const size_t alignment = __alignof__ (struct dirent);
|
|
||||||
/* Since kdp->d_reclen is already aligned for the kernel structure
|
|
||||||
this may compute a value that is bigger than necessary. */
|
|
||||||
size_t new_reclen = ((kdp->d_reclen + size_diff + alignment - 1)
|
|
||||||
@@ -259,7 +223,7 @@ getdents_wrap (int fd, char *buf, size_t nbytes)
|
|
||||||
memcpy (dp->d_name, kdp->d_name,
|
|
||||||
kdp->d_reclen - offsetof (struct kernel_dirent, d_name));
|
|
||||||
|
|
||||||
- dp = (DIRENT_TYPE *) ((char *) dp + new_reclen);
|
|
||||||
+ dp = (struct dirent *) ((char *) dp + new_reclen);
|
|
||||||
kdp = (struct kernel_dirent *) (((char *) kdp) + kdp->d_reclen);
|
|
||||||
}
|
|
||||||
}
|
|
31
xfsdump.spec
31
xfsdump.spec
@ -1,17 +1,19 @@
|
|||||||
Summary: Administrative utilities for the XFS filesystem
|
Summary: Backup and restore utilities for the XFS filesystem
|
||||||
Name: xfsdump
|
Name: xfsdump
|
||||||
Version: 3.1.9
|
Version: 3.1.10
|
||||||
Release: 6%{?dist}
|
Release: 1%{?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+
|
||||||
URL: http://oss.sgi.com/projects/xfs/
|
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
|
Source1: http://kernel.org/pub/linux/utils/fs/xfs/%{name}/%{name}-%{version}.tar.sign
|
||||||
BuildRequires: make
|
Source2: https://git.kernel.org/pub/scm/docs/kernel/pgpkeys.git/plain/keys/20AE1692E13DDEE0.asc
|
||||||
BuildRequires: gcc
|
BuildRequires: make
|
||||||
BuildRequires: libtool, gettext, gawk
|
BuildRequires: gcc
|
||||||
BuildRequires: xfsprogs-devel, libuuid-devel, libattr-devel ncurses-devel
|
BuildRequires: libtool, gettext, gawk
|
||||||
Requires: xfsprogs >= 2.6.30, attr >= 2.0.0
|
BuildRequires: xfsprogs-devel, libuuid-devel, libattr-devel ncurses-devel
|
||||||
|
BuildRequires: gnupg2, xz
|
||||||
|
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
|
||||||
@ -31,6 +33,7 @@ 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
|
||||||
|
xzcat '%{SOURCE0}' | %{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data=-
|
||||||
%setup -q
|
%setup -q
|
||||||
|
|
||||||
%build
|
%build
|
||||||
@ -60,6 +63,10 @@ mkdir -p $RPM_BUILD_ROOT/%{_sharedstatedir}/xfsdump/inventory
|
|||||||
%{_sharedstatedir}/xfsdump/inventory
|
%{_sharedstatedir}/xfsdump/inventory
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* 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
|
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 3.1.9-6
|
||||||
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
|
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
|
||||||
Related: rhbz#1991688
|
Related: rhbz#1991688
|
||||||
|
Loading…
Reference in New Issue
Block a user