RE: [PATCH v1 4/4] builtin/unpack-objects.c: change xwrite to write_in_full to allow large sizes.
- From
rsbecker@nexbridge.com <rsbecker@nexbridge.com>
- Date
- Feb 27, 2024, 00:18 UTC
- Message-ID
- <027201da6912$872779d0$95766d70$@nexbridge.com>
- In-Reply-To
- <xmqqr0gyixuu.fsf@gitster.g>
On Monday, February 26, 2024 6:56 PM, Junio C Hamano wrote:
Show 7 quoted lines
>"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.
Show 7 quoted lines
>> >> Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com> >> --- >> builtin/unpack-objects.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) > >The same comment as [1/4]. Perhaps your MAX_IO_SIZE should be tuned
downwards, so that xwrite() works as it was designed to
>work.
I am considering undoing this one, other than ensuring that the error code is checked and returned. The MAX_IO_SIZE is sufficient. I think the actual fail was in the original repack.c not this one.
Show 15 quoted lines
>
>> diff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c index
>> e0a701f2b3..6935c4574e 100644
>> --- a/builtin/unpack-objects.c
>> +++ b/builtin/unpack-objects.c
>> @@ -680,7 +680,7 @@ int cmd_unpack_objects(int argc, const char
>> **argv, const char *prefix UNUSED)
>>
>> /* Write the last part of the buffer to stdout */
>> while (len) {
>> - int ret = xwrite(1, buffer + offset, len);
>> + int ret = write_in_full(1, buffer + offset, len);
>> if (ret <= 0)
>> break;
>> len -= ret;