[PATCH 06/27] object-store: close all packs upon clearing the object store
From: Stefan BellerSigned-off-by: Stefan Beller Signed-off-by: Junio C Hamano Signed-off-by: Nguyễn Thái Ngọc Duy --- builtin/am.c | 2 +- builtin/clone.c| 2 +- builtin/fetch.c| 2 +- builtin/merge.c| 2 +- builtin/receive-pack.c | 2 +- object.c | 7 +++ packfile.c | 4 ++-- packfile.h | 2 +- 8 files changed, 11 insertions(+), 12 deletions(-) diff --git a/builtin/am.c b/builtin/am.c index 5bdd2d7578..47beddbe24 100644 --- a/builtin/am.c +++ b/builtin/am.c @@ -1859,7 +1859,7 @@ static void am_run(struct am_state *state, int resume) */ if (!state->rebasing) { am_destroy(state); - close_all_packs(); + close_all_packs(the_repository->objects); run_command_v_opt(argv_gc_auto, RUN_GIT_CMD); } } diff --git a/builtin/clone.c b/builtin/clone.c index 855947f1ab..7df5932b85 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -1218,7 +1218,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix) transport_disconnect(transport); if (option_dissociate) { - close_all_packs(); + close_all_packs(the_repository->objects); dissociate_from_references(); } diff --git a/builtin/fetch.c b/builtin/fetch.c index 8ee998ea2e..a39e9d7b15 100644 --- a/builtin/fetch.c +++ b/builtin/fetch.c @@ -1478,7 +1478,7 @@ int cmd_fetch(int argc, const char **argv, const char *prefix) string_list_clear(, 0); - close_all_packs(); + close_all_packs(the_repository->objects); argv_array_pushl(_gc_auto, "gc", "--auto", NULL); if (verbosity < 0) diff --git a/builtin/merge.c b/builtin/merge.c index 30264cfd7c..96d56cbdd2 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -411,7 +411,7 @@ static void finish(struct commit *head_commit, * We ignore errors in 'gc --auto', since the * user should see them. */ - close_all_packs(); + close_all_packs(the_repository->objects); run_command_v_opt(argv_gc_auto, RUN_GIT_CMD); } } diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c index b7ce7c7f52..1a298a6711 100644 --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@ -2026,7 +2026,7 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix) proc.git_cmd = 1; proc.argv = argv_gc_auto; - close_all_packs(); + close_all_packs(the_repository->objects); if (!start_command()) { if (use_sideband) copy_to_sideband(proc.err, -1, NULL); diff --git a/object.c b/object.c index 04631ee841..4c2cf7ff5d 100644 --- a/object.c +++ b/object.c @@ -5,6 +5,7 @@ #include "commit.h" #include "tag.h" #include "object-store.h" +#include "packfile.h" static struct object **obj_hash; static int nr_objs, obj_hash_size; @@ -483,8 +484,6 @@ void raw_object_store_clear(struct raw_object_store *o) o->alt_odb_tail = NULL; INIT_LIST_HEAD(>packed_git_mru); - /* -* TODO: call close_all_packs once migrated to -* take an object store argument -*/ + close_all_packs(o); + o->packed_git = NULL; } diff --git a/packfile.c b/packfile.c index 39f4a85200..f2dc084745 100644 --- a/packfile.c +++ b/packfile.c @@ -311,11 +311,11 @@ static void close_pack(struct packed_git *p) close_pack_index(p); } -void close_all_packs(void) +void close_all_packs(struct raw_object_store *o) { struct packed_git *p; - for (p = the_repository->objects->packed_git; p; p = p->next) + for (p = o->packed_git; p; p = p->next) if (p->do_not_close) die("BUG: want to close pack marked 'do-not-close'"); else diff --git a/packfile.h b/packfile.h index 76496226bb..5b1ce00f84 100644 --- a/packfile.h +++ b/packfile.h @@ -66,7 +66,7 @@ extern void close_pack_index(struct packed_git *); extern unsigned char *use_pack(struct packed_git *, struct pack_window **, off_t, unsigned long *); extern void close_pack_windows(struct packed_git *); -extern void close_all_packs(void); +extern void close_all_packs(struct raw_object_store *o); extern void unuse_pack(struct pack_window **); extern void clear_delta_base_cache(void); extern struct packed_git *add_packed_git(const char *path, size_t path_len, int local); -- 2.17.0.rc0.348.gd5a49e0b6f
Re: [PATCH 06/27] object-store: close all packs upon clearing the object store
On 02/20, Stefan Beller wrote: > Signed-off-by: Stefan BellerStraight forward change, looks good. > --- > builtin/am.c | 2 +- > builtin/clone.c| 2 +- > builtin/fetch.c| 2 +- > builtin/merge.c| 2 +- > builtin/receive-pack.c | 2 +- > object.c | 6 ++ > packfile.c | 4 ++-- > packfile.h | 2 +- > 8 files changed, 10 insertions(+), 12 deletions(-) > > diff --git a/builtin/am.c b/builtin/am.c > index 5bdd2d7578..4762a702e3 100644 > --- a/builtin/am.c > +++ b/builtin/am.c > @@ -1859,7 +1859,7 @@ static void am_run(struct am_state *state, int resume) >*/ > if (!state->rebasing) { > am_destroy(state); > - close_all_packs(); > + close_all_packs(_repository->objects); > run_command_v_opt(argv_gc_auto, RUN_GIT_CMD); > } > } > diff --git a/builtin/clone.c b/builtin/clone.c > index 101c27a593..13cfaa6488 100644 > --- a/builtin/clone.c > +++ b/builtin/clone.c > @@ -1217,7 +1217,7 @@ int cmd_clone(int argc, const char **argv, const char > *prefix) > transport_disconnect(transport); > > if (option_dissociate) { > - close_all_packs(); > + close_all_packs(_repository->objects); > dissociate_from_references(); > } > > diff --git a/builtin/fetch.c b/builtin/fetch.c > index 8ee998ea2e..4d72efca78 100644 > --- a/builtin/fetch.c > +++ b/builtin/fetch.c > @@ -1478,7 +1478,7 @@ int cmd_fetch(int argc, const char **argv, const char > *prefix) > > string_list_clear(, 0); > > - close_all_packs(); > + close_all_packs(_repository->objects); > > argv_array_pushl(_gc_auto, "gc", "--auto", NULL); > if (verbosity < 0) > diff --git a/builtin/merge.c b/builtin/merge.c > index 30264cfd7c..907ae44ab5 100644 > --- a/builtin/merge.c > +++ b/builtin/merge.c > @@ -411,7 +411,7 @@ static void finish(struct commit *head_commit, >* We ignore errors in 'gc --auto', since the >* user should see them. >*/ > - close_all_packs(); > + close_all_packs(_repository->objects); > run_command_v_opt(argv_gc_auto, RUN_GIT_CMD); > } > } > diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c > index b2eac79a6e..954fc72c7c 100644 > --- a/builtin/receive-pack.c > +++ b/builtin/receive-pack.c > @@ -2027,7 +2027,7 @@ int cmd_receive_pack(int argc, const char **argv, const > char *prefix) > proc.git_cmd = 1; > proc.argv = argv_gc_auto; > > - close_all_packs(); > + close_all_packs(_repository->objects); > if (!start_command()) { > if (use_sideband) > copy_to_sideband(proc.err, -1, NULL); > diff --git a/object.c b/object.c > index c76b62572a..34daaf37b3 100644 > --- a/object.c > +++ b/object.c > @@ -4,6 +4,7 @@ > #include "tree.h" > #include "commit.h" > #include "tag.h" > +#include "packfile.h" > > static struct object **obj_hash; > static int nr_objs, obj_hash_size; > @@ -469,8 +470,5 @@ void raw_object_store_clear(struct raw_object_store *o) > > while (!list_empty(>packed_git_mru)) > list_del(>packed_git_mru); > - /* > - * TODO: call close_all_packs once migrated to > - * take an object store argument > - */ > + close_all_packs(o); > } > diff --git a/packfile.c b/packfile.c > index d41e4c83d0..511a2b0cdf 100644 > --- a/packfile.c > +++ b/packfile.c > @@ -311,11 +311,11 @@ static void close_pack(struct packed_git *p) > close_pack_index(p); > } > > -void close_all_packs(void) > +void close_all_packs(struct raw_object_store *o) > { > struct packed_git *p; > > - for (p = the_repository->objects.packed_git; p; p = p->next) > + for (p = o->packed_git; p; p = p->next) > if (p->do_not_close) > die("BUG: want to close pack marked 'do-not-close'"); > else > diff --git a/packfile.h b/packfile.h > index a7fca598d6..6a2c57045c 100644 > --- a/packfile.h > +++ b/packfile.h > @@ -63,7 +63,7 @@ extern void close_pack_index(struct packed_git *); > > extern unsigned char *use_pack(struct packed_git *, struct pack_window **, > off_t, unsigned long *); > extern void close_pack_windows(struct packed_git *); > -extern void close_all_packs(void); > +extern void close_all_packs(struct raw_object_store *o); > extern void unuse_pack(struct pack_window **); > extern void clear_delta_base_cache(void); > extern struct packed_git *add_packed_git(const char *path, size_t path_len, > int local); > -- > 2.16.1.291.g4437f3f132-goog > -- Brandon Williams
[PATCH 06/27] object-store: close all packs upon clearing the object store
Signed-off-by: Stefan Beller--- builtin/am.c | 2 +- builtin/clone.c| 2 +- builtin/fetch.c| 2 +- builtin/merge.c| 2 +- builtin/receive-pack.c | 2 +- object.c | 6 ++ packfile.c | 4 ++-- packfile.h | 2 +- 8 files changed, 10 insertions(+), 12 deletions(-) diff --git a/builtin/am.c b/builtin/am.c index 5bdd2d7578..4762a702e3 100644 --- a/builtin/am.c +++ b/builtin/am.c @@ -1859,7 +1859,7 @@ static void am_run(struct am_state *state, int resume) */ if (!state->rebasing) { am_destroy(state); - close_all_packs(); + close_all_packs(_repository->objects); run_command_v_opt(argv_gc_auto, RUN_GIT_CMD); } } diff --git a/builtin/clone.c b/builtin/clone.c index 101c27a593..13cfaa6488 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -1217,7 +1217,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix) transport_disconnect(transport); if (option_dissociate) { - close_all_packs(); + close_all_packs(_repository->objects); dissociate_from_references(); } diff --git a/builtin/fetch.c b/builtin/fetch.c index 8ee998ea2e..4d72efca78 100644 --- a/builtin/fetch.c +++ b/builtin/fetch.c @@ -1478,7 +1478,7 @@ int cmd_fetch(int argc, const char **argv, const char *prefix) string_list_clear(, 0); - close_all_packs(); + close_all_packs(_repository->objects); argv_array_pushl(_gc_auto, "gc", "--auto", NULL); if (verbosity < 0) diff --git a/builtin/merge.c b/builtin/merge.c index 30264cfd7c..907ae44ab5 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -411,7 +411,7 @@ static void finish(struct commit *head_commit, * We ignore errors in 'gc --auto', since the * user should see them. */ - close_all_packs(); + close_all_packs(_repository->objects); run_command_v_opt(argv_gc_auto, RUN_GIT_CMD); } } diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c index b2eac79a6e..954fc72c7c 100644 --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@ -2027,7 +2027,7 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix) proc.git_cmd = 1; proc.argv = argv_gc_auto; - close_all_packs(); + close_all_packs(_repository->objects); if (!start_command()) { if (use_sideband) copy_to_sideband(proc.err, -1, NULL); diff --git a/object.c b/object.c index c76b62572a..34daaf37b3 100644 --- a/object.c +++ b/object.c @@ -4,6 +4,7 @@ #include "tree.h" #include "commit.h" #include "tag.h" +#include "packfile.h" static struct object **obj_hash; static int nr_objs, obj_hash_size; @@ -469,8 +470,5 @@ void raw_object_store_clear(struct raw_object_store *o) while (!list_empty(>packed_git_mru)) list_del(>packed_git_mru); - /* -* TODO: call close_all_packs once migrated to -* take an object store argument -*/ + close_all_packs(o); } diff --git a/packfile.c b/packfile.c index d41e4c83d0..511a2b0cdf 100644 --- a/packfile.c +++ b/packfile.c @@ -311,11 +311,11 @@ static void close_pack(struct packed_git *p) close_pack_index(p); } -void close_all_packs(void) +void close_all_packs(struct raw_object_store *o) { struct packed_git *p; - for (p = the_repository->objects.packed_git; p; p = p->next) + for (p = o->packed_git; p; p = p->next) if (p->do_not_close) die("BUG: want to close pack marked 'do-not-close'"); else diff --git a/packfile.h b/packfile.h index a7fca598d6..6a2c57045c 100644 --- a/packfile.h +++ b/packfile.h @@ -63,7 +63,7 @@ extern void close_pack_index(struct packed_git *); extern unsigned char *use_pack(struct packed_git *, struct pack_window **, off_t, unsigned long *); extern void close_pack_windows(struct packed_git *); -extern void close_all_packs(void); +extern void close_all_packs(struct raw_object_store *o); extern void unuse_pack(struct pack_window **); extern void clear_delta_base_cache(void); extern struct packed_git *add_packed_git(const char *path, size_t path_len, int local); -- 2.16.1.291.g4437f3f132-goog