On 2026-02-27 at 11:23:01, Patrick Steinhardt wrote: > diff --git a/upload-pack.c b/upload-pack.c > index c2643c0295..f8ba245616 100644 > --- a/upload-pack.c > +++ b/upload-pack.c > @@ -270,6 +270,13 @@ static int relay_pack_data(int pack_objects_out, struct output_state *os, > } > } > > + /* > + * Make sure that we buffer some data before sending it to the client. > + * This significantly reduces the number of write(3p) syscalls. > + */ > + if (readsz && os->used < (LARGE_PACKET_DATA_MAX * 2 / 3)) > + return readsz; > + > if (os->used > 1) { > send_client_data(1, os->buffer, os->used - 1, use_sideband); > os->buffer[0] = os->buffer[os->used - 1]; This seems mostly reasonable and well-explained. The one question I have is this: how does this work when packfile generation is actually very slow (or when the connection is slow) and we need to send data every so often to keep the connection alive? I just want to make sure we're not breaking the keepalive sideband case when that's necessary, but of course I have no objections to improving performance and reducing overhead. -- brian m. carlson (they/them) Toronto, Ontario, CA