Re: [PATCH v4 06/13] pack-bitmap.c: support bitmap pack-reuse with incremental MIDXs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Mar 14, 2025 at 1:18 PM Taylor Blau <me@xxxxxxxxxxxx> wrote:
>
> In a similar fashion as previous commits in the first phase of
> incremental MIDXs, enumerate not just the packs in the current
> incremental MIDX layer, but previous ones as well.
>
> Likewise, in reuse_partial_packfile_from_bitmap(), when reusing only a
> single pack from a MIDX, use the oldest layer's preferred pack as it is
> likely to contain the most amount of reusable sections.

"most amount" => "largest number" or "largest size" ?


>
> Signed-off-by: Taylor Blau <me@xxxxxxxxxxxx>
> ---
>  pack-bitmap.c | 11 ++++++++---
>  1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/pack-bitmap.c b/pack-bitmap.c
> index 1b4fec0033..7a41535425 100644
> --- a/pack-bitmap.c
> +++ b/pack-bitmap.c
> @@ -2333,7 +2333,8 @@ void reuse_partial_packfile_from_bitmap(struct bitmap_index *bitmap_git,
>                 multi_pack_reuse = 0;
>
>         if (multi_pack_reuse) {
> -               for (i = 0; i < bitmap_git->midx->num_packs; i++) {
> +               struct multi_pack_index *m = bitmap_git->midx;
> +               for (i = 0; i < m->num_packs + m->num_packs_in_base; i++) {
>                         struct bitmapped_pack pack;
>                         if (nth_bitmapped_pack(r, bitmap_git->midx, &pack, i) < 0) {
>                                 warning(_("unable to load pack: '%s', disabling pack-reuse"),
> @@ -2359,14 +2360,18 @@ void reuse_partial_packfile_from_bitmap(struct bitmap_index *bitmap_git,
>                 uint32_t pack_int_id;
>
>                 if (bitmap_is_midx(bitmap_git)) {
> +                       struct multi_pack_index *m = bitmap_git->midx;
>                         uint32_t preferred_pack_pos;
>
> -                       if (midx_preferred_pack(bitmap_git->midx, &preferred_pack_pos) < 0) {
> +                       while (m->base_midx)
> +                               m = m->base_midx;
> +
> +                       if (midx_preferred_pack(m, &preferred_pack_pos) < 0) {
>                                 warning(_("unable to compute preferred pack, disabling pack-reuse"));
>                                 return;
>                         }
>
> -                       pack = bitmap_git->midx->packs[preferred_pack_pos];
> +                       pack = nth_midxed_pack(m, preferred_pack_pos);
>                         pack_int_id = preferred_pack_pos;
>                 } else {
>                         pack = bitmap_git->pack;
> --
> 2.49.0.13.gd0d564685b
>





[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux