- Add three patches from SLE12 that aren't upstream:
coreutils-misc.patch (fixes for tests) coreutils-getaddrinfo.patch (fake success as there's no network in the build system) coreutils-ocfs2_reflinks.patch (support ocfs2 reflinks in cp) OBS-URL: https://build.opensuse.org/package/show/Base:System/coreutils?expand=0&rev=225
This commit is contained in:
parent
77474cd407
commit
baceaa89e2
21
coreutils-getaddrinfo.patch
Normal file
21
coreutils-getaddrinfo.patch
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
gnulib-tests/test-getaddrinfo.c | 6 +-----
|
||||||
|
1 file changed, 1 insertion(+), 5 deletions(-)
|
||||||
|
|
||||||
|
Index: gnulib-tests/test-getaddrinfo.c
|
||||||
|
===================================================================
|
||||||
|
--- gnulib-tests/test-getaddrinfo.c.orig 2013-12-04 15:53:33.000000000 +0100
|
||||||
|
+++ gnulib-tests/test-getaddrinfo.c 2014-02-20 17:59:57.474430854 +0100
|
||||||
|
@@ -86,11 +86,7 @@ simple (char const *host, char const *se
|
||||||
|
the test merely because someone is down the country on their
|
||||||
|
in-law's farm. */
|
||||||
|
if (res == EAI_AGAIN)
|
||||||
|
- {
|
||||||
|
- skip++;
|
||||||
|
- fprintf (stderr, "skipping getaddrinfo test: no network?\n");
|
||||||
|
- return 77;
|
||||||
|
- }
|
||||||
|
+ return 0;
|
||||||
|
/* IRIX reports EAI_NONAME for "https". Don't fail the test
|
||||||
|
merely because of this. */
|
||||||
|
if (res == EAI_NONAME)
|
61
coreutils-misc.patch
Normal file
61
coreutils-misc.patch
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
---
|
||||||
|
gnulib-tests/test-isnanl.h | 4 +++-
|
||||||
|
tests/misc/help-version.sh | 1 +
|
||||||
|
tests/other-fs-tmpdir | 3 +++
|
||||||
|
3 files changed, 7 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
Index: gnulib-tests/test-isnanl.h
|
||||||
|
===================================================================
|
||||||
|
--- gnulib-tests/test-isnanl.h.orig 2013-12-04 15:53:33.000000000 +0100
|
||||||
|
+++ gnulib-tests/test-isnanl.h 2014-02-20 18:05:09.900982392 +0100
|
||||||
|
@@ -47,7 +47,7 @@ main ()
|
||||||
|
/* Quiet NaN. */
|
||||||
|
ASSERT (isnanl (NaNl ()));
|
||||||
|
|
||||||
|
-#if defined LDBL_EXPBIT0_WORD && defined LDBL_EXPBIT0_BIT
|
||||||
|
+#if defined LDBL_EXPBIT0_WORD && defined LDBL_EXPBIT0_BIT && 0
|
||||||
|
/* A bit pattern that is different from a Quiet NaN. With a bit of luck,
|
||||||
|
it's a Signalling NaN. */
|
||||||
|
{
|
||||||
|
@@ -89,6 +89,7 @@ main ()
|
||||||
|
{ LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
|
||||||
|
ASSERT (isnanl (x.value));
|
||||||
|
}
|
||||||
|
+#if 0
|
||||||
|
/* The isnanl function should recognize Pseudo-NaNs, Pseudo-Infinities,
|
||||||
|
Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals, as defined in
|
||||||
|
Intel IA-64 Architecture Software Developer's Manual, Volume 1:
|
||||||
|
@@ -122,6 +123,7 @@ main ()
|
||||||
|
ASSERT (isnanl (x.value));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
Index: tests/misc/help-version.sh
|
||||||
|
===================================================================
|
||||||
|
--- tests/misc/help-version.sh.orig 2013-12-04 15:48:30.000000000 +0100
|
||||||
|
+++ tests/misc/help-version.sh 2014-02-20 18:05:09.901982368 +0100
|
||||||
|
@@ -245,6 +245,7 @@ parted_setup () { args="-s $tmp_in mklab
|
||||||
|
for i in $built_programs; do
|
||||||
|
# Skip these.
|
||||||
|
case $i in chroot|stty|tty|false|chcon|runcon) continue;; esac
|
||||||
|
+ case $i in df) continue;; esac
|
||||||
|
|
||||||
|
rm -rf $tmp_in $tmp_in2 $tmp_dir $tmp_out $bigZ_in $zin $zin2
|
||||||
|
echo z |gzip > $zin
|
||||||
|
Index: tests/other-fs-tmpdir
|
||||||
|
===================================================================
|
||||||
|
--- tests/other-fs-tmpdir.orig 2014-02-20 18:05:09.901982368 +0100
|
||||||
|
+++ tests/other-fs-tmpdir 2014-02-20 18:06:52.108548168 +0100
|
||||||
|
@@ -43,6 +43,9 @@ for d in $CANDIDATE_TMP_DIRS; do
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
+# Autobuild hack
|
||||||
|
+test -f /bin/uname.bin && other_partition_tmpdir=
|
||||||
|
+
|
||||||
|
if test -z "$other_partition_tmpdir"; then
|
||||||
|
skip_ \
|
||||||
|
"requires a writable directory on a different disk partition,
|
142
coreutils-ocfs2_reflinks.patch
Normal file
142
coreutils-ocfs2_reflinks.patch
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
>From 34556c4e36effc165032724cd37e6a4d2682f880 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jie Liu <jeff....@oracle.com>
|
||||||
|
Date: Tue, 3 May 2011 22:21:41 +0800
|
||||||
|
Subject: [PATCH 1/1] copy: add OCFS2 reflink support
|
||||||
|
|
||||||
|
* src/copy.c (copy_reg): When cp is invoked with '--reflink=[WHEN]', try
|
||||||
|
OCFS2 reflink file first, if it fails, try btrfs clone file later if
|
||||||
|
possible. The reflink will fail with EEXIST if the destination file
|
||||||
|
already exists on OCFS2, in this case, it means the user intended to
|
||||||
|
do OCFS2 reflink rather than btrfs clone, so we need not try the latter.
|
||||||
|
|
||||||
|
Signed-off-by: Jie Liu <jeff....@oracle.com>
|
||||||
|
---
|
||||||
|
src/copy.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
|
||||||
|
1 file changed, 90 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
Index: src/copy.c
|
||||||
|
===================================================================
|
||||||
|
--- src/copy.c.orig 2014-02-20 17:50:19.791236017 +0100
|
||||||
|
+++ src/copy.c 2014-02-20 17:54:06.068824055 +0100
|
||||||
|
@@ -221,6 +221,46 @@ sparse_copy (int src_fd, int dest_fd, ch
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* Perform the OCFS2 CoW reflink ioctl(2) operation if possible.
|
||||||
|
+ When using '-p' option, the file's default attributes(i.e. mode,timestamp,
|
||||||
|
+ ownership and security context if possbile) are reflinked to the destination
|
||||||
|
+ file as well, we will then skip over the standard preserve process for such
|
||||||
|
+ attributes. Upon success, return 0, Otherwise, return -1 and set errno. */
|
||||||
|
+static inline int
|
||||||
|
+reflink_file (char const *src_name, char const *dst_name,
|
||||||
|
+ int src_fd, bool preserve_attrs)
|
||||||
|
+{
|
||||||
|
+#ifdef __linux__
|
||||||
|
+# ifndef REFLINK_ATTR_NONE
|
||||||
|
+# define REFLINK_ATTR_NONE 0
|
||||||
|
+# endif
|
||||||
|
+# ifndef REFLINK_ATTR_PRESERVE
|
||||||
|
+# define REFLINK_ATTR_PRESERVE 1
|
||||||
|
+# endif
|
||||||
|
+# ifndef OCFS2_IOC_REFLINK
|
||||||
|
+ struct reflink_arguments {
|
||||||
|
+ uint64_t old_path;
|
||||||
|
+ uint64_t new_path;
|
||||||
|
+ uint64_t preserve;
|
||||||
|
+ };
|
||||||
|
+# define OCFS2_IOC_REFLINK _IOW ('o', 4, struct reflink_arguments)
|
||||||
|
+# endif
|
||||||
|
+ struct reflink_arguments args = {
|
||||||
|
+ .old_path = (unsigned long) src_name,
|
||||||
|
+ .new_path = (unsigned long) dst_name,
|
||||||
|
+ .preserve = preserve_attrs ? REFLINK_ATTR_PRESERVE : REFLINK_ATTR_NONE,
|
||||||
|
+ };
|
||||||
|
+ return ioctl (src_fd, OCFS2_IOC_REFLINK, &args);
|
||||||
|
+#else
|
||||||
|
+ (void) src_name;
|
||||||
|
+ (void) dst_name;
|
||||||
|
+ (void) src_fd;
|
||||||
|
+ (void) preserve_attrs;
|
||||||
|
+ errno = ENOTSUP;
|
||||||
|
+ return -1;
|
||||||
|
+#endif
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/* Perform the O(1) btrfs clone operation, if possible.
|
||||||
|
Upon success, return 0. Otherwise, return -1 and set errno. */
|
||||||
|
static inline int
|
||||||
|
@@ -930,6 +970,45 @@ copy_reg (char const *src_name, char con
|
||||||
|
goto close_src_desc;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* When cp is invoked with '--reflink=[WHEN]', try to do OCFS2 reflink
|
||||||
|
+ ioctl(2) first, if it fails, try btrfs clone file later if possible.
|
||||||
|
+ The reason why perform those operations separately is because `cp'
|
||||||
|
+ will create the destination file if it is a '*new_dst'. In this case,
|
||||||
|
+ we have to unlink(2) it firstly, otherwise, OCFS2 reflink will fail with
|
||||||
|
+ 'EEXIST'. */
|
||||||
|
+ bool reflink_ok = false;
|
||||||
|
+ if (data_copy_required && x->reflink_mode)
|
||||||
|
+ {
|
||||||
|
+ bool preserve_attributes = (x->preserve_ownership
|
||||||
|
+ && x->preserve_mode
|
||||||
|
+ && x->preserve_timestamps);
|
||||||
|
+ reflink_ok = reflink_file (src_name, dst_name, source_desc,
|
||||||
|
+ preserve_attributes) == 0;
|
||||||
|
+ if (reflink_ok)
|
||||||
|
+ {
|
||||||
|
+ *new_dst = false;
|
||||||
|
+
|
||||||
|
+ /* Skip over the standard attributes preserve process
|
||||||
|
+ if reflink succeeds and they are already reflinked. */
|
||||||
|
+ if (preserve_attributes)
|
||||||
|
+ goto close_src_desc;
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ /* When the destination file is aready exists on OCFS2, the
|
||||||
|
+ above reflink should fails with EEXIST. If that happens,
|
||||||
|
+ we need not try btrfs clone again since it means the user
|
||||||
|
+ is definitely want a OCFS2 reflink. */
|
||||||
|
+ if (errno == EEXIST)
|
||||||
|
+ {
|
||||||
|
+ error (0, errno, _("failed to reflink %s from %s"),
|
||||||
|
+ quote_n (0, dst_name), quote_n (1, src_name));
|
||||||
|
+ return_val = false;
|
||||||
|
+ goto close_src_desc;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/* The semantics of the following open calls are mandated
|
||||||
|
by the specs for both cp and mv. */
|
||||||
|
if (! *new_dst)
|
||||||
|
@@ -1075,17 +1154,20 @@ copy_reg (char const *src_name, char con
|
||||||
|
/* --attributes-only overrides --reflink. */
|
||||||
|
if (data_copy_required && x->reflink_mode)
|
||||||
|
{
|
||||||
|
- bool clone_ok = clone_file (dest_desc, source_desc) == 0;
|
||||||
|
- if (clone_ok || x->reflink_mode == REFLINK_ALWAYS)
|
||||||
|
+ if (! reflink_ok)
|
||||||
|
{
|
||||||
|
- if (!clone_ok)
|
||||||
|
+ bool clone_ok = clone_file (dest_desc, source_desc) == 0;
|
||||||
|
+ if (clone_ok || x->reflink_mode == REFLINK_ALWAYS)
|
||||||
|
{
|
||||||
|
- error (0, errno, _("failed to clone %s from %s"),
|
||||||
|
- quote_n (0, dst_name), quote_n (1, src_name));
|
||||||
|
- return_val = false;
|
||||||
|
- goto close_src_and_dst_desc;
|
||||||
|
+ if (!clone_ok)
|
||||||
|
+ {
|
||||||
|
+ error (0, errno, _("failed to clone %s from %s"),
|
||||||
|
+ quote_n (0, dst_name), quote_n (1, src_name));
|
||||||
|
+ return_val = false;
|
||||||
|
+ goto close_src_and_dst_desc;
|
||||||
|
+ }
|
||||||
|
+ data_copy_required = false;
|
||||||
|
}
|
||||||
|
- data_copy_required = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,7 @@
|
|||||||
tests: avoid test framework failure if the file system lacks ACL support
|
tests: avoid test framework failure if the file system lacks ACL support
|
||||||
|
|
||||||
Prompted by a test framework failure of tests/mkdir/p-acl.sh on armv7l,
|
Prompted by a test framework failure of tests/mkdir/p-acl.sh on VMs
|
||||||
|
where filesystem are mounted without ACL support.
|
||||||
I pushed the following patch upstream which will go into 8.23 some day.
|
I pushed the following patch upstream which will go into 8.23 some day.
|
||||||
_______________________________________________
|
_______________________________________________
|
||||||
|
|
||||||
@ -20,14 +21,14 @@ Date: Fri Jan 10 16:48:25 2014 +0100
|
|||||||
ACL specs, and use ACL specs which can't be mapped into regular file
|
ACL specs, and use ACL specs which can't be mapped into regular file
|
||||||
permission bits. Document the reasons.
|
permission bits. Document the reasons.
|
||||||
---
|
---
|
||||||
init.cfg | 29 ++++++++++++++++++++++++++++-
|
init.cfg | 32 ++++++++++++++++++++++++++++++--
|
||||||
1 file changed, 28 insertions(+), 1 deletion(-)
|
1 file changed, 30 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
Index: init.cfg
|
Index: init.cfg
|
||||||
===================================================================
|
===================================================================
|
||||||
--- init.cfg.orig
|
--- init.cfg.orig 2014-02-24 15:19:12.185467061 +0100
|
||||||
+++ init.cfg
|
+++ init.cfg 2014-02-24 15:20:46.802273660 +0100
|
||||||
@@ -192,9 +192,37 @@ require_valgrind_()
|
@@ -192,10 +192,38 @@ require_valgrind_()
|
||||||
skip_ "requires a working valgrind"
|
skip_ "requires a working valgrind"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,6 +55,7 @@ Index: init.cfg
|
|||||||
require_setfacl_()
|
require_setfacl_()
|
||||||
{
|
{
|
||||||
- setfacl -m user::rwx . \
|
- setfacl -m user::rwx . \
|
||||||
|
- || skip_ "setfacl does not work on the current file system"
|
||||||
+ local d='acltestdir_'
|
+ local d='acltestdir_'
|
||||||
+ mkdir $d || framework_failure_
|
+ mkdir $d || framework_failure_
|
||||||
+ local f=0
|
+ local f=0
|
||||||
@ -63,6 +65,7 @@ Index: init.cfg
|
|||||||
+ || f=1
|
+ || f=1
|
||||||
+ rm -rf $d || framework_failure_
|
+ rm -rf $d || framework_failure_
|
||||||
+ test $f = 0 \
|
+ test $f = 0 \
|
||||||
|| skip_ "setfacl does not work on the current file system"
|
+ || skip_ "The current file system does not support ACLs"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Require a controlling input 'terminal'.
|
||||||
|
@ -1,3 +1,12 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Feb 24 14:59:35 CET 2014 - pth@suse.de
|
||||||
|
|
||||||
|
- Add three patches from SLE12 that aren't upstream:
|
||||||
|
coreutils-misc.patch (fixes for tests)
|
||||||
|
coreutils-getaddrinfo.patch (fake success as there's no network
|
||||||
|
in the build system)
|
||||||
|
coreutils-ocfs2_reflinks.patch (support ocfs2 reflinks in cp)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Jan 24 13:36:37 UTC 2014 - mail@bernhard-voelker.de
|
Fri Jan 24 13:36:37 UTC 2014 - mail@bernhard-voelker.de
|
||||||
|
|
||||||
|
@ -101,6 +101,15 @@ Patch100: coreutils-build-timeout-as-pie.patch
|
|||||||
# on already existing destination directories.
|
# on already existing destination directories.
|
||||||
Patch110: coreutils-copy-fix-selinux-existing-dirs.patch
|
Patch110: coreutils-copy-fix-selinux-existing-dirs.patch
|
||||||
|
|
||||||
|
# At least a bit of reflink support
|
||||||
|
Patch111: coreutils-ocfs2_reflinks.patch
|
||||||
|
|
||||||
|
# There is no network in the build root so make the test succeed
|
||||||
|
Patch112: coreutils-getaddrinfo.patch
|
||||||
|
|
||||||
|
# Assorted fixes
|
||||||
|
Patch113: coreutils-misc.patch
|
||||||
|
|
||||||
# Fix imported gnulib long double math tests for little-endian PowerPC
|
# Fix imported gnulib long double math tests for little-endian PowerPC
|
||||||
Patch202: coreutils-gnulib-tests-ppc64le.patch
|
Patch202: coreutils-gnulib-tests-ppc64le.patch
|
||||||
|
|
||||||
@ -149,6 +158,9 @@ the GNU fileutils, sh-utils, and textutils packages.
|
|||||||
#
|
#
|
||||||
%patch100
|
%patch100
|
||||||
%patch110
|
%patch110
|
||||||
|
%patch111
|
||||||
|
%patch112
|
||||||
|
%patch113
|
||||||
%patch202
|
%patch202
|
||||||
|
|
||||||
%patch300
|
%patch300
|
||||||
|
@ -1,3 +1,12 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Feb 24 14:59:35 CET 2014 - pth@suse.de
|
||||||
|
|
||||||
|
- Add three patches from SLE12 that aren't upstream:
|
||||||
|
coreutils-misc.patch (fixes for tests)
|
||||||
|
coreutils-getaddrinfo.patch (fake success as there's no network
|
||||||
|
in the build system)
|
||||||
|
coreutils-ocfs2_reflinks.patch (support ocfs2 reflinks in cp)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Jan 24 13:36:37 UTC 2014 - mail@bernhard-voelker.de
|
Fri Jan 24 13:36:37 UTC 2014 - mail@bernhard-voelker.de
|
||||||
|
|
||||||
|
@ -101,6 +101,15 @@ Patch100: coreutils-build-timeout-as-pie.patch
|
|||||||
# on already existing destination directories.
|
# on already existing destination directories.
|
||||||
Patch110: coreutils-copy-fix-selinux-existing-dirs.patch
|
Patch110: coreutils-copy-fix-selinux-existing-dirs.patch
|
||||||
|
|
||||||
|
# At least a bit of reflink support
|
||||||
|
Patch111: coreutils-ocfs2_reflinks.patch
|
||||||
|
|
||||||
|
# There is no network in the build root so make the test succeed
|
||||||
|
Patch112: coreutils-getaddrinfo.patch
|
||||||
|
|
||||||
|
# Assorted fixes
|
||||||
|
Patch113: coreutils-misc.patch
|
||||||
|
|
||||||
# Fix imported gnulib long double math tests for little-endian PowerPC
|
# Fix imported gnulib long double math tests for little-endian PowerPC
|
||||||
Patch202: coreutils-gnulib-tests-ppc64le.patch
|
Patch202: coreutils-gnulib-tests-ppc64le.patch
|
||||||
|
|
||||||
@ -149,6 +158,9 @@ the GNU fileutils, sh-utils, and textutils packages.
|
|||||||
#
|
#
|
||||||
%patch100
|
%patch100
|
||||||
%patch110
|
%patch110
|
||||||
|
%patch111
|
||||||
|
%patch112
|
||||||
|
%patch113
|
||||||
%patch202
|
%patch202
|
||||||
|
|
||||||
%patch300
|
%patch300
|
||||||
|
Loading…
Reference in New Issue
Block a user