From 6653c03cdc6fe3dfc1e77494d0c4fe06bbd044c9 Mon Sep 17 00:00:00 2001 From: Eric Sandeen Date: Fri, 11 Feb 2022 14:54:10 -0600 Subject: [PATCH] New upstream version 3.1.10 --- .gitignore | 2 + 20AE1692E13DDEE0.asc | 185 ++++++++++++++++++ sources | 3 +- xfsdump-ancient-getdents-code.patch | 284 ---------------------------- xfsdump-getdents-ifdef-hell.patch | 214 --------------------- xfsdump.spec | 30 +-- 6 files changed, 207 insertions(+), 511 deletions(-) create mode 100644 20AE1692E13DDEE0.asc delete mode 100644 xfsdump-ancient-getdents-code.patch delete mode 100644 xfsdump-getdents-ifdef-hell.patch diff --git a/.gitignore b/.gitignore index 88103e0..1ad2214 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/20AE1692E13DDEE0.asc b/20AE1692E13DDEE0.asc new file mode 100644 index 0000000..27900de --- /dev/null +++ b/20AE1692E13DDEE0.asc @@ -0,0 +1,185 @@ +pub rsa4096 2011-11-03 [SC] + 2B8185919E8D248981869DED20AE1692E13DDEE0 +uid Eric R. Sandeen +uid Eric R. Sandeen +sub rsa4096 2011-11-03 [E] + 048CA40C8F5B5507E3A6CD6BE2C297037B26BEB4 + +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +4NMMCC8gkONe4tek +=EFoy +-----END PGP PUBLIC KEY BLOCK----- diff --git a/sources b/sources index 908cb57..48e7d5f 100644 --- a/sources +++ b/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 diff --git a/xfsdump-ancient-getdents-code.patch b/xfsdump-ancient-getdents-code.patch deleted file mode 100644 index cdbd7bc..0000000 --- a/xfsdump-ancient-getdents-code.patch +++ /dev/null @@ -1,284 +0,0 @@ -commit b1d6979f1fae82acc79d27cf0add4d55da6d83cc -Author: Kyle McMartin -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 - Reviewed-by: Christoph Hellwig - Signed-off-by: Dave Chinner - -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 - --/* 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; - } diff --git a/xfsdump-getdents-ifdef-hell.patch b/xfsdump-getdents-ifdef-hell.patch deleted file mode 100644 index b6fe794..0000000 --- a/xfsdump-getdents-ifdef-hell.patch +++ /dev/null @@ -1,214 +0,0 @@ -commit 9ed517b63df35876681e8883388fbf154afda0c1 -Author: Kyle McMartin -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 - Reviewed-by: Christoph Hellwig - Signed-off-by: Dave Chinner - -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 - --/* 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); - } - } diff --git a/xfsdump.spec b/xfsdump.spec index 4e9774c..fd22a8b 100644 --- a/xfsdump.spec +++ b/xfsdump.spec @@ -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 3.1.10-1 +- New upstream release + * Sat Jan 22 2022 Fedora Release Engineering - 3.1.9-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild