All of lore.kernel.org
 help / color / mirror / Atom feed
From: <rsbecker@nexbridge.com>
To: "'Junio C Hamano'" <gitster@pobox.com>,
	"'Randall S. Becker'" <the.n.e.key@gmail.com>
Cc: <git@vger.kernel.org>
Subject: RE: [PATCH v1 2/4] builtin/receive-pack.c: change xwrite to write_in_full to allow large sizes.
Date: Mon, 26 Feb 2024 19:15:53 -0500	[thread overview]
Message-ID: <027101da6912$23cf31c0$6b6d9540$@nexbridge.com> (raw)
In-Reply-To: <xmqq34tekcoo.fsf@gitster.g>

On Monday, February 26, 2024 6:51 PM, Junio C Hamano wrote:
>"Randall S. Becker" <the.n.e.key@gmail.com> writes:
>
>> 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.
>
>As msg[] here is 4k on-stack buffer, if the I/O size is small enough, the
above may happen, and I think write-in-full is warranted here.  If
>your I/O must be done in 1k chunks, it would be very slow to run things
like writing a pack stream to clone any non-toy projects,
>though X-<.

On the x86 platform, we get a size large enough not to trigger the failure
in t7704. However, on ia64, the limit is 56Kb, which apparently does. I'm
hoping no one else has a 1Kb limit - although some TCP stacks might
experience it. Either way, truncating a package is bad. Fortunately the I/O
subsystem on NonStop is very fast (basically DMA) between process memory
space.

>
>> Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com>
>> ---
>>  builtin/receive-pack.c | 5 +++--
>>  1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c index
>> db65607485..5064f3d300 100644
>> --- a/builtin/receive-pack.c
>> +++ b/builtin/receive-pack.c
>> @@ -455,8 +455,9 @@ static void report_message(const char *prefix,
>> const char *err, va_list params)
>>
>>  	if (use_sideband)
>>  		send_sideband(1, 2, msg, sz, use_sideband);
>> -	else
>> -		xwrite(2, msg, sz);
>> +	else {
>> +		write_in_full(2, msg, sz);
>> +	}
>>  }
>>
>>  __attribute__((format (printf, 1, 2)))


  reply	other threads:[~2024-02-27  0:16 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
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 [this message]
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='027101da6912$23cf31c0$6b6d9540$@nexbridge.com' \
    --to=rsbecker@nexbridge.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.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.