diff --git a/pkg/noun/manage.c b/pkg/noun/manage.c index b6ee6c1d2a..d880a42032 100644 --- a/pkg/noun/manage.c +++ b/pkg/noun/manage.c @@ -2154,6 +2154,15 @@ u3m_boot(c3_c* dir_c, size_t len_i) */ u3m_pave(nuu_o); + /* GC immediately if requested + */ + if ( (c3n == nuu_o) && (u3C.wag_w & u3o_check_corrupt) ) { + u3l_log("boot: gc requested"); + u3m_grab(u3_none); + u3C.wag_w &= ~u3o_check_corrupt; + u3l_log("boot: gc complete"); + } + /* Initialize the jet system. */ { diff --git a/pkg/vere/main.c b/pkg/vere/main.c index 599c8fc246..ec98561ea7 100644 --- a/pkg/vere/main.c +++ b/pkg/vere/main.c @@ -1901,6 +1901,7 @@ _cw_meld(c3_i argc, c3_c* argv[]) { "no-demand", no_argument, NULL, 6 }, { "swap", no_argument, NULL, 7 }, { "swap-to", required_argument, NULL, 8 }, + { "gc-early", no_argument, NULL, 9 }, { NULL, 0, NULL, 0 } }; @@ -1931,6 +1932,11 @@ _cw_meld(c3_i argc, c3_c* argv[]) break; } + case 9: { // gc-early + u3C.wag_w |= u3o_check_corrupt; + break; + } + case '?': { fprintf(stderr, "invalid argument\r\n"); exit(1); @@ -2063,6 +2069,7 @@ _cw_pack(c3_i argc, c3_c* argv[]) { "no-demand", no_argument, NULL, 6 }, { "swap", no_argument, NULL, 7 }, { "swap-to", required_argument, NULL, 8 }, + { "gc-early", no_argument, NULL, 9 }, { NULL, 0, NULL, 0 } }; @@ -2093,6 +2100,11 @@ _cw_pack(c3_i argc, c3_c* argv[]) break; } + case 9: { // gc-early + u3C.wag_w |= u3o_check_corrupt; + break; + } + case '?': { fprintf(stderr, "invalid argument\r\n"); exit(1);