On 24/02/2023 14:33, George Valkov wrote: > >> On 2023-02-24, at 12:23 AM, Paul Eggert wrote: >> >> On 2/20/23 13:14, Pádraig Brady wrote: >>> Since https://github.com/coreutils/gnulib/commit/4db8db34 >>> gnulib has been unconditionally replacing lseek() on macos. >>> Now with SEEK_DATA undefined that replaced lseek() >>> will run the code intended for BeOS. >>> So either the lseek.m4 or lseek.c needs adjusting accordingly. >> >> Good catch, thanks. I updated the Gnulib patch accordingly; see attached. > > Nice: I just downloaded a fresh copy of Savannah, and it already includes the attached patch, so no action needed on my side. > > The copy created by cp is good. I noticed that you have added a —debug switch, so I gave it a test: > 1. If the target exists I get this output. I would assume zeroes means that all data is read from the source, but pages containing only zeroes are skipped, while pages containing data are written to the target, which is fine. I would guess 4 KB page granularity or some form of detection takes place. Exactly. > ./coreutils-2023-02-24/src/cp --debug cc1-mmap cc1-ori > 'cc1-mmap' -> 'cc1-ori' > copy offload: avoided, reflink: unsupported, sparse detection: zeros > > 2. If the target does not exist, the file is cloned. You might want to report something about that in the debug output. Otherwise the clone is good. > > ./coreutils-2023-02-24/src/cp --debug cc1-mmap cc1-ori > 'cc1-mmap' -> 'cc1-ori’ Yes that was a mistake. Should be fixed with https://git.sv.gnu.org/gitweb/?p=coreutils.git;a=commitdiff;h=65bb27656 > My first attempt to run the tests stopped here, so I had to interrupt it 10 minutes later with Control+C. > ^Cmake[1]: *** Deleting file 'tests/tail-2/inotify-race.log' > ^C^C^C^C^C^C > > killall gdb > ps -A |grep gdb > 29584 ?? 0:00.09 gdb -nx --batch-silent --eval-command=break 1475 --eval-command=run --pid=29583 -f file --eval-command=quit tail > 23269 ttys010 0:00.09 gdb -nx --batch-silent --eval-command=break 1475 --eval-command=run --pid=23268 -f file --eval-command=quit tail > > killall -9 gdb > ps -A |grep gdb > > Killing gdb allowed the tests to continue, I had to do it twice: That's awkward. That test documents the issue with protecting the gdb invocation with timeout(1). I suppose we could restrict this test to inotify capable systems, which would have the side effect of avoiding its use on non linux systems. The attached patch does that. thanks for all the testing. Pádraig