"Neeraj Singh via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes: > From: Neeraj Singh <neerajsi@xxxxxxxxxxxxx> > > The unpack-objects functionality is used by fetch, push, and fast-import > to turn the transfered data into object database entries when there are > fewer objects than the 'unpacklimit' setting. > > By enabling bulk-checkin when unpacking objects, we can take advantage > of batched fsyncs. This feels confused in that we dispatch to unpack-objects (instead of index-objects) only when the number of loose objects should not matter from performance point of view, and bulk-checkin should shine from performance point of view only when there are enough objects to batch. Also if we ever add "too many small loose objects is wasteful, let's send them into a single 'batch pack'" optimization, it would create a funny situation where the caller sends the contents of a small incoming packfile to unpack-objects, but the command chooses to bunch them all together in a packfile anyway ;-) So, I dunno. > Signed-off-by: Neeraj Singh <neerajsi@xxxxxxxxxxxxx> > --- > builtin/unpack-objects.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c > index dbeb0680a58..c55b6616aed 100644 > --- a/builtin/unpack-objects.c > +++ b/builtin/unpack-objects.c > @@ -1,5 +1,6 @@ > #include "builtin.h" > #include "cache.h" > +#include "bulk-checkin.h" > #include "config.h" > #include "object-store.h" > #include "object.h" > @@ -503,10 +504,12 @@ static void unpack_all(void) > if (!quiet) > progress = start_progress(_("Unpacking objects"), nr_objects); > CALLOC_ARRAY(obj_list, nr_objects); > + plug_bulk_checkin(); > for (i = 0; i < nr_objects; i++) { > unpack_one(i); > display_progress(progress, i + 1); > } > + unplug_bulk_checkin(); > stop_progress(&progress); > > if (delta_list)