From: Junio C Hamano <gitster@pobox.com>
To: "Randall S. Becker" <the.n.e.key@gmail.com>
Cc: git@vger.kernel.org, "Randall S. Becker" <rsbecker@nexbridge.com>
Subject: Re: [PATCH v2 3/3] builtin/unpack-objects.c: change xwrite to write_in_full avoid truncation.
Date: Tue, 27 Feb 2024 10:58:54 -0800 [thread overview]
Message-ID: <xmqq1q8xspht.fsf@gitster.g> (raw)
In-Reply-To: <20240227150934.7950-4-randall.becker@nexbridge.ca> (Randall S. Becker's message of "Tue, 27 Feb 2024 10:09:34 -0500")
"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 if the supplied
> len value exceeds the supported value. Replacing xwrite with write_in_full
> corrects this problem. Future optimisations could remove the loop in favour
> of just calling write_in_full.
>
> Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com>
> ---
> builtin/unpack-objects.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> 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;
Why do we need this with a retry loop that is prepared for short
write(2) specifically like this?
If xwrite() calls underlying write(2) with too large a value, then
your MAX_IO_SIZE is misconfigured, and the fix should go there, not
here in a loop that expects a working xwrite() that is allowed to
return on short write(2), I would think.
next prev parent reply other threads:[~2024-02-27 18:58 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-27 15:09 [PATCH v2 0/2] Change xwrite() to write_in_full() in builtins Randall S. Becker
2024-02-27 15:09 ` [PATCH v2 1/3] builtin/repack.c: change xwrite to write_in_full and report errors Randall S. Becker
2024-02-27 18:49 ` Junio C Hamano
2024-02-27 15:09 ` [PATCH v2 2/3] builtin/receive-pack.c: change xwrite to write_in_full Randall S. Becker
2024-02-27 19:00 ` Junio C Hamano
2024-02-27 15:09 ` [PATCH v2 3/3] builtin/unpack-objects.c: change xwrite to write_in_full avoid truncation Randall S. Becker
2024-02-27 18:58 ` Junio C Hamano [this message]
2024-02-27 19:04 ` rsbecker
2024-02-27 19:25 ` Jeff King
2024-02-27 21:05 ` rsbecker
2024-03-07 10:00 ` Jeff King
2024-02-27 21:11 ` [PATCH v2 0/2] Change xwrite() to write_in_full() in builtins 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=xmqq1q8xspht.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=rsbecker@nexbridge.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.