coreutils: Re-enable hole seeking on Darwin
The bug appears to be resolved: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=61386 See also here: https://github.com/openwrt/openwrt/pull/11960#issuecomment-1443787254 And here: https://github.com/openwrt/openwrt/pull/12233
This commit is contained in:
parent
d7e6609505
commit
65366c0602
|
@ -39,11 +39,6 @@ stdenv.mkDerivation rec {
|
||||||
hash = "sha256-rbz8/omSNbceh2jc8HzVMlILf1T5qAZIQ/jRmakEu6o=";
|
hash = "sha256-rbz8/omSNbceh2jc8HzVMlILf1T5qAZIQ/jRmakEu6o=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = lib.optionals (stdenv.isDarwin && stdenv.isx86_64) [
|
|
||||||
# Workaround for https://debbugs.gnu.org/cgi/bugreport.cgi?bug=51433
|
|
||||||
./disable-seek-hole.patch
|
|
||||||
];
|
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
# The test tends to fail on btrfs, f2fs and maybe other unusual filesystems.
|
# The test tends to fail on btrfs, f2fs and maybe other unusual filesystems.
|
||||||
sed '2i echo Skipping dd sparse test && exit 77' -i ./tests/dd/sparse.sh
|
sed '2i echo Skipping dd sparse test && exit 77' -i ./tests/dd/sparse.sh
|
||||||
|
|
|
@ -1,43 +0,0 @@
|
||||||
diff --git a/src/copy.c b/src/copy.c
|
|
||||||
index cb9018f93..2a4ccc061 100644
|
|
||||||
--- a/src/copy.c
|
|
||||||
+++ b/src/copy.c
|
|
||||||
@@ -502,7 +502,7 @@ write_zeros (int fd, off_t n_bytes)
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
-#ifdef SEEK_HOLE
|
|
||||||
+#if 0
|
|
||||||
/* Perform an efficient extent copy, if possible. This avoids
|
|
||||||
the overhead of detecting holes in hole-introducing/preserving
|
|
||||||
copy, and thus makes copying sparse files much more efficient.
|
|
||||||
@@ -1095,7 +1095,7 @@ infer_scantype (int fd, struct stat const *sb,
|
|
||||||
&& ST_NBLOCKS (*sb) < sb->st_size / ST_NBLOCKSIZE))
|
|
||||||
return PLAIN_SCANTYPE;
|
|
||||||
|
|
||||||
-#ifdef SEEK_HOLE
|
|
||||||
+#if 0
|
|
||||||
scan_inference->ext_start = lseek (fd, 0, SEEK_DATA);
|
|
||||||
if (0 <= scan_inference->ext_start)
|
|
||||||
return LSEEK_SCANTYPE;
|
|
||||||
@@ -1377,7 +1377,7 @@ copy_reg (char const *src_name, char const *dst_name,
|
|
||||||
off_t n_read;
|
|
||||||
bool wrote_hole_at_eof = false;
|
|
||||||
if (! (
|
|
||||||
-#ifdef SEEK_HOLE
|
|
||||||
+#if 0
|
|
||||||
scantype == LSEEK_SCANTYPE
|
|
||||||
? lseek_copy (source_desc, dest_desc, buf, buf_size, hole_size,
|
|
||||||
scan_inference.ext_start, src_open_sb.st_size,
|
|
||||||
diff --git a/tests/seek-data-capable b/tests/seek-data-capable
|
|
||||||
index cc6372214..6e7a9ec1e 100644
|
|
||||||
--- a/tests/seek-data-capable
|
|
||||||
+++ b/tests/seek-data-capable
|
|
||||||
@@ -1,5 +1,7 @@
|
|
||||||
import sys, os, errno, platform
|
|
||||||
|
|
||||||
+sys.exit(1)
|
|
||||||
+
|
|
||||||
# Pass an _empty_ file
|
|
||||||
if len(sys.argv) != 2:
|
|
||||||
sys.exit(1)
|
|
Loading…
Reference in a new issue