Subject: RE: [ANNOUNCE] Git v2.32.0-rc3 - t5300 Still Broken on NonStop ia64/x86

From: "Randall S. Becker" <[email-masked]>
Date: Thu, 3 Jun 2021 16:07:19 -0400

On June 3, 2021 3:31 PM, Peff wrote:
>On Wed, Jun 02, 2021 at 04:34:51PM -0400, Randall S. Becker wrote:
>
>> >> The wrapper should apply to all platforms.  NFS (and presumably
>> >> other network FSes) can be mounted with interrupts enabled.
>> >
>> >I don't mind that, as the wrapper is pretty low-cost (and one less
>> >Makefile knob is nice). If it's widespread, though, I find it curious that nobody has run into it before now.
>>
>> I suspect this is because of the way the file system on NonStop behaves. It is a multi-processor platform, with multi-cores, so anything
>can happen. If the file system is delayed for any reason, like a signal coming from a different core (EINTR has high priority), then fsync()
>will be interrupted. EINTR is allowed on NonStop for fsync(). So it would be really great if the patch included a modification to
>config.mak.uname to include that. This would be a timing-only issue on most other systems, probably something that would hit NFS.
>>
>> The patch for the config is:
>> diff --git a/config.mak.uname b/config.mak.uname index
>> cb443b4e02..ac3e3ca2c5 100644
>> --- a/config.mak.uname
>> +++ b/config.mak.uname
>> @@ -566,6 +566,7 @@ ifeq ($(uname_S),NONSTOP_KERNEL)
>>         NO_REGEX = NeedsStartEnd
>>         NO_PTHREADS = UnfortunatelyYes
>>         FREAD_READS_DIRECTORIES = UnfortunatelyYes
>> +       FSYNC_NEEDS_RESTART = YesPlease
>>
>>         # Not detected (nor checked for) by './configure'.
>
>Yeah, if we don't make it unconditional, then this is the obvious next step. But the more important question is: did you test this out and did
>it fix the test breakage you saw on NonStop?

The fix works for me and t5300 passes. I tested it without the conditional approach. While the test was running, I noticed this:

+ mkdir -p /home/git/git/t/trash directory.t5300-pack-object/prereq-test-dir-FAIL_PREREQS
+ cd /home/git/git/t/trash directory.t5300-pack-object/prereq-test-dir-FAIL_PREREQS
+ test_bool_env GIT_TEST_FAIL_PREREQS false
error: last command exited with $?=1
prerequisite FAIL_PREREQS not satisfied
expecting success of 5300.32 'index-pack --threads=N or pack.threads=N warns when no pthreads':

This may be intended, but the error line showed in red.

Regards,
Randall