Re: [PATCH v7 1/5] unpack-objects.c: add dry_run mode for get_data()
- From
Jiang Xin <worldhello.net@gmail.com>
- Date
- Dec 31, 2021, 03:06 UTC
- Message-ID
- <CANYiYbESw-hP8R+075uGb-H_uJpAcBftn1AcyCcDZ_UbD_S6-Q@mail.gmail.com>
- In-Reply-To
- <20211221115201.12120-2-chiyutianyi@gmail.com>
On Wed, Dec 22, 2021 at 2:33 AM Han Xin <chiyutianyi@gmail.com> wrote:
Show 27 quoted lines
> > From: Han Xin <hanxin.hx@alibaba-inc.com> > > In dry_run mode, "get_data()" is used to verify the inflation of data, > and the returned buffer will not be used at all and will be freed > immediately. Even in dry_run mode, it is dangerous to allocate a > full-size buffer for a large blob object. Therefore, only allocate a > low memory footprint when calling "get_data()" in dry_run mode. > > Suggested-by: Jiang Xin <zhiyou.jx@alibaba-inc.com> > Signed-off-by: Han Xin <hanxin.hx@alibaba-inc.com> > --- > builtin/unpack-objects.c | 23 +++++++++--- > t/t5590-unpack-non-delta-objects.sh | 57 +++++++++++++++++++++++++++++ > 2 files changed, 74 insertions(+), 6 deletions(-) > create mode 100755 t/t5590-unpack-non-delta-objects.sh > > diff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c > index 4a9466295b..9104eb48da 100644 > --- a/builtin/unpack-objects.c > +++ b/builtin/unpack-objects.c > @@ -96,15 +96,21 @@ static void use(int bytes) > display_throughput(progress, consumed_bytes); > } > > -static void *get_data(unsigned long size) > +static void *get_data(size_t size, int dry_run)
After a offline talk with Han Xin, we feel it is not necessary to pass "dry_run" as a argument, use the file-scope static variable directly in "get_data()".
Show 8 quoted lines
> {
> git_zstream stream;
> - void *buf = xmallocz(size);
> + size_t bufsize;
> + void *buf;
>
> memset(&stream, 0, sizeof(stream));
> + if (dry_run && size > 8192)Use the file-scope static variable "dry_run".