New upstream version 3.1.10

This commit is contained in:
Eric Sandeen 2022-02-11 14:54:10 -06:00
parent 606cc230a4
commit 6653c03cdc
6 changed files with 207 additions and 511 deletions

2
.gitignore vendored
View File

@ -9,3 +9,5 @@ xfsdump-3.0.4.tar.gz
/xfsdump-3.1.6.tar.gz
/xfsdump-3.1.8.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
View 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-----

View File

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

View File

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

View File

@ -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);
}
}

View File

@ -1,17 +1,19 @@
Summary: Administrative utilities for the XFS filesystem
Name: xfsdump
Version: 3.1.9
Release: 6%{?dist}
Summary: Backup and restore utilities for the XFS filesystem
Name: xfsdump
Version: 3.1.10
Release: 1%{?dist}
# Licensing based on generic "GNU GENERAL PUBLIC LICENSE"
# in source, with no mention of version.
License: GPL+
URL: http://oss.sgi.com/projects/xfs/
Source0: http://kernel.org/pub/linux/utils/fs/xfs/%{name}/%{name}-%{version}.tar.xz
BuildRequires: make
BuildRequires: gcc
BuildRequires: libtool, gettext, gawk
BuildRequires: xfsprogs-devel, libuuid-devel, libattr-devel ncurses-devel
Requires: xfsprogs >= 2.6.30, attr >= 2.0.0
License: GPL+
Source0: http://kernel.org/pub/linux/utils/fs/xfs/%{name}/%{name}-%{version}.tar.xz
Source1: http://kernel.org/pub/linux/utils/fs/xfs/%{name}/%{name}-%{version}.tar.sign
Source2: https://git.kernel.org/pub/scm/docs/kernel/pgpkeys.git/plain/keys/20AE1692E13DDEE0.asc
BuildRequires: make
BuildRequires: gcc
BuildRequires: libtool, gettext, gawk
BuildRequires: xfsprogs-devel, libuuid-devel, libattr-devel ncurses-devel
BuildRequires: gnupg2, xz
Requires: xfsprogs >= 2.6.30, attr >= 2.0.0
%description
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.
%prep
xzcat '%{SOURCE0}' | %{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data=-
%setup -q
%build
@ -60,6 +63,9 @@ mkdir -p $RPM_BUILD_ROOT/%{_sharedstatedir}/xfsdump/inventory
%{_sharedstatedir}/xfsdump/inventory
%changelog
* Fri Feb 11 2022 Eric Sandeen <sandeen@redhat.com> 3.1.10-1
- New upstream release
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.9-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild