|
From: | Pádraig Brady |
Subject: | bug#61386: [PATCH] cp,mv,install: Disable sparse copy on macOS |
Date: | Mon, 13 Feb 2023 18:04:18 +0000 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Thunderbird/109.0 |
On 13/02/2023 17:16, George Valkov wrote:
On 2023-02-13, at 4:05 PM, Pádraig Brady <P@draigBrady.com> wrote: This amendment seems to make the treatment of umask and setuid consistent between using fclonefileat() and not. diff --git a/src/copy.c b/src/copy.c index 782fab98d..8370f55bd 100644 --- a/src/copy.c +++ b/src/copy.c @@ -1280,10 +1280,11 @@ copy_reg (char const *src_name, char const *dst_name, return_val = false; } } - mode_already_preserved = (fc_flags & CLONE_ACL) != 0; + mode_already_preserved = (fc_flags & CLONE_ACL) != 0 + && cloned_mode == src_mode; dest_desc = -1; omitted_permissions = dst_mode & ~cloned_mode; - extra_permissions = 0; + extra_permissions = dst_mode & ~ cached_umask (); goto set_dest_mode; } else if (! handle_clone_fail (dst_dirfd, dst_relname, src_name, With this, all tests pass (apart from thru-dangling.sh as mentioned above which I'll skip in another patch). Paul I'm happy to merge this amendment, mention the improvement in NEWS, and push in your name if you're OK with it.To summarise: 1. We apply my original patch to disable sparse-copy on macOS. Otherwise since fclonefileat is not used whenever we overwrite a file, corruption will still occur. An updated copy of the patch is attached below: By doing this we fail the following test so you have to disable it on macOS: FAIL: tests/cp/sparse-perf.sh
Right. I'll adjust your patch to also get tests/seek-data-capable to return false on Darwin, which will then skip that test.
2. Next we add support for fclonefileat using cp: improve use of fclonefileat A few more tests fail. 3. We fix those tests using the patch from your last mail. Then we have to disable the following test on macOS: FAIL: tests/cp/thru-dangling.sh Final results: copying sparse-files on macOS no longer produces corrupted copies. Performance is greatly optimised by cloning instead of copying, where possible. The following two tests now fail on macOS and will be disabled: FAIL: tests/cp/sparse-perf.sh
handled above
FAIL: tests/cp/thru-dangling.sh
I'll fix this
Looks good to me. Yes, please add me to the commit history. Also feel free to add my web site if appropriate. Finally please let me know when the patches are pushed, so that I can update OpenWRT to use the latest version of coreutils. Pádraig and Paul, thank you very much for your kind help! It was nice working with you and learning new experience. Cheers, mates!
Summary sounds good. Thanks for all the testing. Pádraig
[Prev in Thread] | Current Thread | [Next in Thread] |