All of lore.kernel.org
 help / color / mirror / Atom feed
From: <rsbecker@nexbridge.com>
To: "'Taylor Blau'" <me@ttaylorr.com>,
	"'Randall S. Becker'" <the.n.e.key@gmail.com>
Cc: <git@vger.kernel.org>
Subject: RE: [PATCH v1 1/4] builtin/index-pack.c: change xwrite to write_in_full to allow large sizes.
Date: Mon, 26 Feb 2024 17:51:09 -0500	[thread overview]
Message-ID: <026b01da6906$4d96f530$e8c4df90$@nexbridge.com> (raw)
In-Reply-To: <Zd0S7aUIG1bhGkaX@nand.local>

On Monday, February 26, 2024 5:39 PM, Taylor Blau wrote:
>On Mon, Feb 26, 2024 at 05:05:35PM -0500, Randall S. Becker wrote:
>> From: "Randall S. Becker" <rsbecker@nexbridge.com>
>>
>> This change is required because some platforms do not support file
>> writes of arbitrary sizes (e.g, NonStop). xwrite ends up truncating
>> the output to the maximum single I/O size possible for the destination device.
>
>Hmm. I'm not sure I understand what NonStop's behavior is here...
>
>> diff --git a/builtin/index-pack.c b/builtin/index-pack.c index
>> a3a37bd215..f80b8d101a 100644
>> --- a/builtin/index-pack.c
>> +++ b/builtin/index-pack.c
>> @@ -1571,7 +1571,7 @@ static void final(const char *final_pack_name, const char *curr_pack_name,
>>  		 * the last part of the input buffer to stdout.
>>  		 */
>>  		while (input_len) {
>> -			err = xwrite(1, input_buffer + input_offset, input_len);
>> +			err = write_in_full(1, input_buffer + input_offset, input_len);
>>  			if (err <= 0)
>>  				break;
>>  			input_len -= err;
>> --
>> 2.42.1
>
>The code above loops while input_len is non-zero, and correctly decrements it by the number of bytes written by xwrite() after each
>iteration.
>
>Assuming that xwrite()/write(2) works how I think it does on NonStop, I'm not sure I understand why this change is necessary.

NonStop has a limited SSIZE_MAX. xwrite only handles that much so anything beyond that gets dropped (not in the above code but in other builtins); hence the critical nature of getting this fix out. This particular change probably could be tightened up on a re-roll to just call write_in_full instead of the while loop. I can fix that for v2. The goal suggested by Phillip W was to change xwrite to write_in_full, so I guess I went a little too far. 




  reply	other threads:[~2024-02-26 22:51 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-26 22:05 [PATCH v1 0/4] Change xwrite() to write_in_full() in builtins Randall S. Becker
2024-02-26 22:05 ` [PATCH v1 1/4] builtin/index-pack.c: change xwrite to write_in_full to allow large sizes Randall S. Becker
2024-02-26 22:38   ` Taylor Blau
2024-02-26 22:51     ` rsbecker [this message]
2024-02-26 23:46       ` Junio C Hamano
2024-02-27  0:12         ` rsbecker
2024-02-26 23:30     ` rsbecker
2024-02-26 22:05 ` [PATCH v1 2/4] builtin/receive-pack.c: " Randall S. Becker
2024-02-26 23:02   ` rsbecker
2024-02-26 23:50   ` Junio C Hamano
2024-02-27  0:15     ` rsbecker
2024-02-26 22:05 ` [PATCH v1 3/4] builtin/repack.c: " Randall S. Becker
2024-02-26 23:54   ` Junio C Hamano
2024-02-27  8:20   ` Jeff King
2024-02-27  8:22     ` Jeff King
2024-02-26 22:05 ` [PATCH v1 4/4] builtin/unpack-objects.c: " Randall S. Becker
2024-02-26 23:56   ` Junio C Hamano
2024-02-27  0:18     ` rsbecker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='026b01da6906$4d96f530$e8c4df90$@nexbridge.com' \
    --to=rsbecker@nexbridge.com \
    --cc=git@vger.kernel.org \
    --cc=me@ttaylorr.com \
    --cc=the.n.e.key@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.