From patchwork Sun Jun 12 07:44:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Teng Long X-Patchwork-Id: 12878657 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D5AAAC433EF for ; Sun, 12 Jun 2022 07:44:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234702AbiFLHos (ORCPT ); Sun, 12 Jun 2022 03:44:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60480 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234694AbiFLHoj (ORCPT ); Sun, 12 Jun 2022 03:44:39 -0400 Received: from mail-pf1-x42b.google.com (mail-pf1-x42b.google.com [IPv6:2607:f8b0:4864:20::42b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3DA4E52507 for ; Sun, 12 Jun 2022 00:44:34 -0700 (PDT) Received: by mail-pf1-x42b.google.com with SMTP id y196so3134191pfb.6 for ; Sun, 12 Jun 2022 00:44:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=lgyEqFO25WCyU7I9GVaJVUI3rVWPjoC4fLZPVAUAAJY=; b=Ry8K+7GlEzWx+NJnz0uSBdZRd3r/l/qbGTlRvICQO+oQ787bW3foXnhrBrC6XM2SpF Q1lf0cNJMKpE3alsanyVFH3G45uHLyniZ3L1BesheK7jaSVvgwZAThw3uXxqw1j3EZCo NzkAgPbMIAa6hyxiA/5m+JTKLXGSwKoXSTTHVVJ1OpBwfCfYB/5qImBs6p3Gj0G1AG1u P/c/Hdr5JWzxMmOFegp1/jSaiwCcAVkzYKKLi8JwS6rmJwU8Im9uCDa9eTNlpPHsduDA rbXRNpcIatUCIoPBpSY1UkPRyePTM/Qu+sNNZalrjbF4Jc2zkQiP5uZTLd2FskFPAXU+ AIZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=lgyEqFO25WCyU7I9GVaJVUI3rVWPjoC4fLZPVAUAAJY=; b=GxVNQYbU71auBiX4Ys+KRykSjKBP6s4bw/BrVAou7YtkDGAA4CMa7j05Y7X2SEpbxC VcHpw3JfBUkOmz2LmGXMIxbDkvaqhfowYvL6n1bMO7FPQGad3kHgxrDFYxFJunEb/Wv+ KsD35urJfldO61wBhUHERsRgLC0aF0XfMIq9zrzV6QEOsMnHsKtS1yHzM0xRecGcqCh6 ycNEn1j7JYzOXovsHHZUVqbSF17FpcjmXHJB0rDkLTMP+cIT5e9azc34O+Al9xqMY9uP oNjDwBfuICqBKcW4hUzxpgjqTvC7j6Md/oJwryvvJbwcoFIevI81ux+ACplVEfQVQ80d GMRw== X-Gm-Message-State: AOAM530uqwnRIL76s5sYfAtPBwilXJfyMV54mBh4ojhs5My25Qdx19Um o8IRQin37LpcStkHkvARxOc= X-Google-Smtp-Source: ABdhPJxl803TCSBTmet7yqUTEmK4nUBmI5g2GpFLwbeSurAxJ5Br4pfJfQgac2EiWI2cOyoo8t8a/Q== X-Received: by 2002:a63:2b8b:0:b0:3fc:c510:7941 with SMTP id r133-20020a632b8b000000b003fcc5107941mr47950295pgr.47.1655019872994; Sun, 12 Jun 2022 00:44:32 -0700 (PDT) Received: from code-infra-dev-cbj.ea134 ([140.205.70.44]) by smtp.gmail.com with ESMTPSA id w14-20020a1709029a8e00b001676f87473fsm2559707plp.302.2022.06.12.00.44.30 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 12 Jun 2022 00:44:32 -0700 (PDT) From: Teng Long To: dyroneteng@gmail.com Cc: avarab@gmail.com, derrickstolee@github.com, git@vger.kernel.org, gitster@pobox.com, me@ttaylorr.com, tenglong.tl@alibaba-inc.com Subject: [PATCH v3 1/5] pack-bitmap.c: continue looping when first MIDX bitmap is found Date: Sun, 12 Jun 2022 15:44:16 +0800 Message-Id: <589e3f4075513b13dcd057242fa207b95371b114.1655018322.git.dyroneteng@gmail.com> X-Mailer: git-send-email 2.35.1.582.g320e881567 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org In "open_midx_bitmap()", we do a loop with the MIDX(es) in repo, when the first one has been found, then will break out by a "return" directly. But actually, it's better to continue the loop until we have visited both the MIDX in our repository, as well as any alternates (along with _their_ alternates, recursively). The reason for this is, there may exist more than one MIDX file in a repo. The "multi_pack_index" struct is actually designed as a singly linked list, and if a MIDX file has been already opened successfully, then the other MIDX files will be skipped and left with a warning "ignoring extra bitmap file." to the output. The discussion link of community: https://public-inbox.org/git/YjzCTLLDCby+kJrZ@nand.local/ Helped-by: Taylor Blau Signed-off-by: Teng Long --- pack-bitmap.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pack-bitmap.c b/pack-bitmap.c index 9c666cdb8b..112c2b12c6 100644 --- a/pack-bitmap.c +++ b/pack-bitmap.c @@ -494,15 +494,16 @@ static int open_pack_bitmap(struct repository *r, static int open_midx_bitmap(struct repository *r, struct bitmap_index *bitmap_git) { + int ret = -1; struct multi_pack_index *midx; assert(!bitmap_git->map); for (midx = get_multi_pack_index(r); midx; midx = midx->next) { if (!open_midx_bitmap_1(bitmap_git, midx)) - return 0; + ret = 0; } - return -1; + return ret; } static int open_bitmap(struct repository *r, From patchwork Sun Jun 12 07:44:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Teng Long X-Patchwork-Id: 12878659 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8242FCCA47C for ; Sun, 12 Jun 2022 07:44:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234751AbiFLHou (ORCPT ); Sun, 12 Jun 2022 03:44:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60518 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234717AbiFLHoj (ORCPT ); Sun, 12 Jun 2022 03:44:39 -0400 Received: from mail-pl1-x632.google.com (mail-pl1-x632.google.com [IPv6:2607:f8b0:4864:20::632]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4B13152509 for ; Sun, 12 Jun 2022 00:44:35 -0700 (PDT) Received: by mail-pl1-x632.google.com with SMTP id u18so2649789plb.3 for ; Sun, 12 Jun 2022 00:44:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=K9rTOKkIQBE+XLOmnUsAosMKFDpiE88muaLSSg70h3w=; b=c6Ii/cK/YX1zcEvjb3dpIJir/AoQPkDCIvoAnpv38kLjn/8SbEql9B8U94kEq+jPxh zRtMc6Amh35VjQX3l8gooQ0gECR/f+bxmn4oUmnWtTQFxedXUs868mQdXuIgXotghOGB B/WdzHj8Fj4vvBc1UIz7YQEl85hTyu22IYjMO/A2tRB8V5v9nhctg/6FExGZxG6EKDLj /j/Pa3AroGMYVmy37iBIRIyDT4yY55QmD/0Y89cenENNj/oJJt3F+UZxUQvhMS/FFmOP ztHX4lrV8ABGb55y4i9DzfYLGDX3EF6qefWbgekBSDKg84711xxpQHjSxdrMy4s17OQZ 3gDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=K9rTOKkIQBE+XLOmnUsAosMKFDpiE88muaLSSg70h3w=; b=b1E6HCFupVqMmRR6NHw92QFcdYgIjK0drh/0J9D07frytGGy2eo9c7y6bxTyFWviQg 6tAdwnk0pOjqF1pdkNw6J8pXSI93bvKvP/6kXh4IVKaqac4PGPDL/R2LdwgQP3tUgaPG fG7foebbIao1exWd8T0hBpklCaqjJbhwOa6N19htzn5Dz5D5Wo5sX0JU4KswBa8yBk3M NCnGGqpnHU0yRulhj3tBArYW02KzeGlnCShY1g89IopA02R2rUMo9W0sk/lBhEg7Xn21 rizVxZ+6LljRcG4M60CSoi4E1AP2mm1rbCRrfdWjH8XpphZOhPm94AlxXH08ALcCUk8s Jqtw== X-Gm-Message-State: AOAM531T8L7wvYzgu7uB4AiJR4wvzIW0QuGX/tM+MbqO3Nqy4+r7aH14 dbz+w9hdrKHEfNkjPWIWxt0= X-Google-Smtp-Source: ABdhPJxe8JZhZzNTfU8JPY7p7nP/RvTTWwhQCBc/Nn1x7cnNEtkyFEMjiLsMfEGaPazp81u/XRgyXQ== X-Received: by 2002:a17:90b:4c0e:b0:1e8:859c:6b56 with SMTP id na14-20020a17090b4c0e00b001e8859c6b56mr8940544pjb.121.1655019875269; Sun, 12 Jun 2022 00:44:35 -0700 (PDT) Received: from code-infra-dev-cbj.ea134 ([140.205.70.44]) by smtp.gmail.com with ESMTPSA id w14-20020a1709029a8e00b001676f87473fsm2559707plp.302.2022.06.12.00.44.33 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 12 Jun 2022 00:44:34 -0700 (PDT) From: Teng Long To: dyroneteng@gmail.com Cc: avarab@gmail.com, derrickstolee@github.com, git@vger.kernel.org, gitster@pobox.com, me@ttaylorr.com, tenglong.tl@alibaba-inc.com Subject: [PATCH v3 2/5] pack-bitmap.c: rename "idx_name" to "bitmap_name" Date: Sun, 12 Jun 2022 15:44:17 +0800 Message-Id: X-Mailer: git-send-email 2.35.1.582.g320e881567 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org In "open_pack_bitmap_1()" and "open_midx_bitmap_1()" we use a var named "idx_name" to represent the bitmap filename which is computed by "midx_bitmap_filename()" or "pack_bitmap_filename()" before we open it. There may bring some confusion in this "idx_name" naming, which might lead us to think of ".idx "or" multi-pack-index" files, although bitmap is essentially can be understood as a kind of index, let's define this name a little more accurate here. Signed-off-by: Teng Long --- pack-bitmap.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pack-bitmap.c b/pack-bitmap.c index 112c2b12c6..f13a6bfe3a 100644 --- a/pack-bitmap.c +++ b/pack-bitmap.c @@ -313,10 +313,10 @@ static int open_midx_bitmap_1(struct bitmap_index *bitmap_git, struct multi_pack_index *midx) { struct stat st; - char *idx_name = midx_bitmap_filename(midx); - int fd = git_open(idx_name); + char *bitmap_name = midx_bitmap_filename(midx); + int fd = git_open(bitmap_name); - free(idx_name); + free(bitmap_name); if (fd < 0) return -1; @@ -368,14 +368,14 @@ static int open_pack_bitmap_1(struct bitmap_index *bitmap_git, struct packed_git { int fd; struct stat st; - char *idx_name; + char *bitmap_name; if (open_pack_index(packfile)) return -1; - idx_name = pack_bitmap_filename(packfile); - fd = git_open(idx_name); - free(idx_name); + bitmap_name = pack_bitmap_filename(packfile); + fd = git_open(bitmap_name); + free(bitmap_name); if (fd < 0) return -1; From patchwork Sun Jun 12 07:44:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Teng Long X-Patchwork-Id: 12878658 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EC5F6C43334 for ; Sun, 12 Jun 2022 07:44:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234742AbiFLHot (ORCPT ); Sun, 12 Jun 2022 03:44:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60744 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234723AbiFLHom (ORCPT ); Sun, 12 Jun 2022 03:44:42 -0400 Received: from mail-pj1-x1030.google.com (mail-pj1-x1030.google.com [IPv6:2607:f8b0:4864:20::1030]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7880B5250E for ; Sun, 12 Jun 2022 00:44:38 -0700 (PDT) Received: by mail-pj1-x1030.google.com with SMTP id a10so3010568pju.3 for ; Sun, 12 Jun 2022 00:44:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=CGYW5rJc9oYiO4yl5ViLtNl9pO0BDQAqIrKP7lEoxoI=; b=E3NEKwGt7U8MmP7u3FSisL9Do9XUxENm0X3siefH3QYoxgSqYYVnV+nG0mR0E+9eBU utamATE+zQFZUjzV77AuTK5ngr1ZAinHBnQCxLXPV2Ft3Lxnt6T5fNCnxUhXflW1xOxD ugxGCGE5bL5rKorrS3HOm2nGEa65mmWiKoQ9tdxcYh5fhp3HlPcQ6bC0FLQSbLeJ0oaw dvJ+e6cKQLYL+Jq8Q5csBrOu5jK2Bne1HsHDEtTPEnqCd7blao+bEJ2cIRY2YM/7yZ17 RF00D5MrHhI70DYYJfL35+0hV8FefMtMMY1eiJDVwPUcmr8MkQlff1hAO3iGw2EQ9pXA 6LUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=CGYW5rJc9oYiO4yl5ViLtNl9pO0BDQAqIrKP7lEoxoI=; b=Md8+QDT6cXLAYunkiJnj1bsPq5+YkKG5MigOT4hzO6ssHWU3PiLzEFrO/2+0rus40+ 1EiAXP7ymre2oDZrwKwh8Ht1cBXC+PSoJvkRyx0FIldpTjw3RISQ2QZiIDNb7Jp2LLPF V2F4F/kqGnvYepo6eGuu7S3/pNWVJOrBPxhfknqZ+M37nbyuDju+88K1hHBxnm6k8cm8 mWEV15ZBiV4XxU7N0VD6QOXpXrbJ0AyRCU8DtWmYnTD/XDudd0c9DkXTUXugBUePk96t FdqLpRDMXG0B7qh72bx+WToQ3yDWvC3kzHO+kkrjtZuOelSzsVqp0/0NvlO6RNXo9yaN sMEg== X-Gm-Message-State: AOAM533iZbbBjt25XcWgFKIOG/GYudtVJsc3Ji4ps1VikkgTsjlKtM8w o4ki5/yHTS85DHQQF25MSG+22lUjpWiJ4Vnr X-Google-Smtp-Source: ABdhPJxOxk6MEGxqOhKXJ2OCQaMVDBbwke6aYdTJXdP1EgWeF+q+d8y9OFNSO4EMBoRDCTPp9CYAhQ== X-Received: by 2002:a17:90a:df16:b0:1e3:1cd:6c6f with SMTP id gp22-20020a17090adf1600b001e301cd6c6fmr9163697pjb.10.1655019877582; Sun, 12 Jun 2022 00:44:37 -0700 (PDT) Received: from code-infra-dev-cbj.ea134 ([140.205.70.44]) by smtp.gmail.com with ESMTPSA id w14-20020a1709029a8e00b001676f87473fsm2559707plp.302.2022.06.12.00.44.35 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 12 Jun 2022 00:44:37 -0700 (PDT) From: Teng Long To: dyroneteng@gmail.com Cc: avarab@gmail.com, derrickstolee@github.com, git@vger.kernel.org, gitster@pobox.com, me@ttaylorr.com, tenglong.tl@alibaba-inc.com Subject: [PATCH v3 3/5] pack-bitmap.c: make warnings support i18N when opening bitmap Date: Sun, 12 Jun 2022 15:44:18 +0800 Message-Id: X-Mailer: git-send-email 2.35.1.582.g320e881567 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org When calling the "open_midx_bitmap_1()" or "open_pack_bitmap_1()", there will be a warning if a normal bitmap or MIDX bitmap already has been opened, then let's make the warning text supporting for translation. Discussion in community: 1. https://public-inbox.org/git/YkPGq0mDL4NG6D1o@nand.local/#t 2. https://public-inbox.org/git/220330.868rsrpohm.gmgdl@evledraar.gmail.com/ Helped-by: Ævar Arnfjörð Bjarmason Helped-by: Taylor Blau Signed-off-by: Teng Long --- pack-bitmap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pack-bitmap.c b/pack-bitmap.c index f13a6bfe3a..af0f41833e 100644 --- a/pack-bitmap.c +++ b/pack-bitmap.c @@ -330,7 +330,7 @@ static int open_midx_bitmap_1(struct bitmap_index *bitmap_git, struct strbuf buf = STRBUF_INIT; get_midx_filename(&buf, midx->object_dir); /* ignore extra bitmap file; we can only handle one */ - warning("ignoring extra bitmap file: %s", buf.buf); + warning(_("ignoring extra bitmap file: %s"), buf.buf); close(fd); strbuf_release(&buf); return -1; @@ -387,7 +387,7 @@ static int open_pack_bitmap_1(struct bitmap_index *bitmap_git, struct packed_git if (bitmap_git->pack || bitmap_git->midx) { /* ignore extra bitmap file; we can only handle one */ - warning("ignoring extra bitmap file: %s", packfile->pack_name); + warning(_("ignoring extra bitmap file: %s"), packfile->pack_name); close(fd); return -1; } From patchwork Sun Jun 12 07:44:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Teng Long X-Patchwork-Id: 12878660 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EBC00C43334 for ; Sun, 12 Jun 2022 07:44:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234753AbiFLHoy (ORCPT ); Sun, 12 Jun 2022 03:44:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32850 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234724AbiFLHop (ORCPT ); Sun, 12 Jun 2022 03:44:45 -0400 Received: from mail-pj1-x1033.google.com (mail-pj1-x1033.google.com [IPv6:2607:f8b0:4864:20::1033]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4937852512 for ; Sun, 12 Jun 2022 00:44:40 -0700 (PDT) Received: by mail-pj1-x1033.google.com with SMTP id 3-20020a17090a174300b001e426a02ac5so6048136pjm.2 for ; Sun, 12 Jun 2022 00:44:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qKuJ3KBnGPCrWR2pmz+TPMtNbCZTXDpz8XvdX7cCCn0=; b=bGTU4iNFdBlWoumYY9rVtEq+/iAqJur0qkrXuC7LPSfg9/Y4f6TQMyJFU9uI1NcYzW /CkMaI/lOIXkcLzcyeTJ813kKqkliJ/zwAeDbahl2Or2YClo4NqeBF9v/HOGigYG52ZH SWopuNmGem0SJ6V4DrecLVCsUJfdfIhRsauzsiNesZK9J/5b8iPwwvLQHZsgU42qjgi8 hRPryUCBm4nUYGbCu4ucMWYprFdY05FVQyWhdwlF7+qg1eWxrsDkmXAF+H0nkoYzsMFA ESXTHUfOACc/gqMVbdn5MZuqtPh4IaIMdRgxsQl88nakR9QkggYV1E98UWKRW2duuMSB hOMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=qKuJ3KBnGPCrWR2pmz+TPMtNbCZTXDpz8XvdX7cCCn0=; b=guhE/c5D1bt12aHAaexR8d2nft6VbKw0HpUDz/yfoV8RSr2boJMZHvMsEtKtf30SFK pXzvHPiHjt0qiYQMjxVPc9znyyB7/yjzrDhKGGjnvg4QrV+vOyfdAV9HMNhPAQ6kU8tX mk+O14gbZnsHsRQMZ8vkwlQ0ZYSFKDQYbNULlpPka39rYrAXIbgwNbiDZVX78UybqiJP w3Q46xuipSpviCK2OUt3nfR0lZtoNBCPqPS4bL9ibJpTm9jnS1nKVB5ywzINSDRuTxv6 ebGHtAzMR/ZgRIiwXbUhx/jOFqZKgwstrn6bCJGWr5oOlezE9dPKcu1bw8qUzrOBV+uT vy3Q== X-Gm-Message-State: AOAM531WCAjSD69Ufr0WtcQHpmIznBGP0wSSpKLFuXmC6t74gwo38agx lKIrcbGqYmtYdOnTovPg8XCd4yg2twYLX3xh X-Google-Smtp-Source: ABdhPJw+o3Qb2m9GljCUHH+ABt41stMpKi3Ti0yJ58grTAQ9iH+f92mjNQ+oHfXJ7izQFfCaYAeY2w== X-Received: by 2002:a17:902:da87:b0:166:423d:f3be with SMTP id j7-20020a170902da8700b00166423df3bemr51206892plx.150.1655019879784; Sun, 12 Jun 2022 00:44:39 -0700 (PDT) Received: from code-infra-dev-cbj.ea134 ([140.205.70.44]) by smtp.gmail.com with ESMTPSA id w14-20020a1709029a8e00b001676f87473fsm2559707plp.302.2022.06.12.00.44.37 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 12 Jun 2022 00:44:39 -0700 (PDT) From: Teng Long To: dyroneteng@gmail.com Cc: avarab@gmail.com, derrickstolee@github.com, git@vger.kernel.org, gitster@pobox.com, me@ttaylorr.com, tenglong.tl@alibaba-inc.com Subject: [PATCH v3 4/5] pack-bitmap.c: using error() instead of silently returning -1 Date: Sun, 12 Jun 2022 15:44:19 +0800 Message-Id: <72da3b584490467c2492578a8125cbcfe05aad9a.1655018322.git.dyroneteng@gmail.com> X-Mailer: git-send-email 2.35.1.582.g320e881567 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org In "open_pack_bitmap_1()" and "open_midx_bitmap_1()", it's better to return error() instead of "-1" when some unexpected error occurs like "stat bitmap file failed", "bitmap header is invalid" or "checksum mismatch", etc. There are places where we do not replace, such as when the bitmap does not exist (no bitmap in repository is allowed) or when another bitmap has already been opened (in which case it should be a warning rather than an error). Signed-off-by: Teng Long --- pack-bitmap.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pack-bitmap.c b/pack-bitmap.c index af0f41833e..5654eb7b8d 100644 --- a/pack-bitmap.c +++ b/pack-bitmap.c @@ -323,7 +323,7 @@ static int open_midx_bitmap_1(struct bitmap_index *bitmap_git, if (fstat(fd, &st)) { close(fd); - return -1; + return error(_("cannot stat bitmap file")); } if (bitmap_git->pack || bitmap_git->midx) { @@ -361,7 +361,7 @@ static int open_midx_bitmap_1(struct bitmap_index *bitmap_git, bitmap_git->map_pos = 0; bitmap_git->map = NULL; bitmap_git->midx = NULL; - return -1; + return error("cannot open midx bitmap file"); } static int open_pack_bitmap_1(struct bitmap_index *bitmap_git, struct packed_git *packfile) @@ -382,7 +382,7 @@ static int open_pack_bitmap_1(struct bitmap_index *bitmap_git, struct packed_git if (fstat(fd, &st)) { close(fd); - return -1; + return error(_("cannot stat bitmap file")); } if (bitmap_git->pack || bitmap_git->midx) { @@ -394,7 +394,7 @@ static int open_pack_bitmap_1(struct bitmap_index *bitmap_git, struct packed_git if (!is_pack_valid(packfile)) { close(fd); - return -1; + return error(_("packfile is invalid")); } bitmap_git->pack = packfile; @@ -409,7 +409,7 @@ static int open_pack_bitmap_1(struct bitmap_index *bitmap_git, struct packed_git bitmap_git->map_size = 0; bitmap_git->map_pos = 0; bitmap_git->pack = NULL; - return -1; + return error(_("bitmap header is invalid")); } return 0; From patchwork Sun Jun 12 07:44:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Teng Long X-Patchwork-Id: 12878661 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D7814C433EF for ; Sun, 12 Jun 2022 07:44:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234744AbiFLHow (ORCPT ); Sun, 12 Jun 2022 03:44:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32970 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234735AbiFLHoq (ORCPT ); Sun, 12 Jun 2022 03:44:46 -0400 Received: from mail-pg1-x52e.google.com (mail-pg1-x52e.google.com [IPv6:2607:f8b0:4864:20::52e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9A5315251B for ; Sun, 12 Jun 2022 00:44:42 -0700 (PDT) Received: by mail-pg1-x52e.google.com with SMTP id f65so2964317pgc.7 for ; Sun, 12 Jun 2022 00:44:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=wzQH5G4iMnInFMG6a4HHz4FLecDCMI7RHFpXVHGR6Lk=; b=cUncIs+ZPKRc/8slMjxH8DElO37MRY9BXv7efx1STqxmaZNeGXu2juJA8dpvQl1Lsh 4xQtkO1aFh+psrnrOKjejRcIxqNZHAKvC6YnciR4Piz4IY0II1pCzCY2eIBRz+YlkRWi RQk8ky+WFjsCh0fD2tYfDo3YHksAQXTz9vvbMpYk7Vl+Qsw/76ZArf4s9FWlwAoMJaTY YduRruO1f6+tPvPy8yPlYCfa5xW9xdYFrWHECH0PEgrmghQ9VIuflx2w9e56/wK0x3n4 fV6FmeXt/epj+p/Q+//rJdPyjwOVpd0KZws4Id3RA26D19/k6gxIg+dwJA9rPBwM101F STbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=wzQH5G4iMnInFMG6a4HHz4FLecDCMI7RHFpXVHGR6Lk=; b=tg6O5UKDmL3VjPlzws+bk09PoWFdxwChR40ztQOg7jv8mxdzfkNp9wddBDfrHuzXzu Uj1SskHpPUcvNrRWzz6CCSvT99txFcLosBhNqEf6iVUkzKxwEI00/MDh+1/oqk/X/pDD /JPO2ZQizjUFSZB89KNYnVTWyu10n4jiG2S6b7dKDugPpgtYAOFvvfvMM2bxzKkIchHB aDdPEAkE1ABdWTQdljWQigKf4f9WpkOmxwE5eKrBUPEmVOccjKbFeU7GfhelImFHRBrA U5hDYG/zz7rzGk1xFnd539z6t6HMXn96eRBZkhh2+dUQ71mn0E/kvETc7Fie/4Gwtjvq nuSQ== X-Gm-Message-State: AOAM533QnmRN49Ks71Ehlzw2bkWJJOsw4iIv/fyd5UVoJ6+FGxshU9DB TJdmPDbvL55sc6dTISxSHG0= X-Google-Smtp-Source: ABdhPJyPn7xQEGN2YXrSPz2Ru+4uPUd+LFaGIFUG2nTS1lEWKbqCTu7PDPSzrfQ1FSA3GT1gaI0UoA== X-Received: by 2002:a63:2686:0:b0:3fc:98b0:a950 with SMTP id m128-20020a632686000000b003fc98b0a950mr48283587pgm.194.1655019881979; Sun, 12 Jun 2022 00:44:41 -0700 (PDT) Received: from code-infra-dev-cbj.ea134 ([140.205.70.44]) by smtp.gmail.com with ESMTPSA id w14-20020a1709029a8e00b001676f87473fsm2559707plp.302.2022.06.12.00.44.40 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 12 Jun 2022 00:44:41 -0700 (PDT) From: Teng Long To: dyroneteng@gmail.com Cc: avarab@gmail.com, derrickstolee@github.com, git@vger.kernel.org, gitster@pobox.com, me@ttaylorr.com, tenglong.tl@alibaba-inc.com Subject: [PATCH v3 5/5] bitmap: add trace2 outputs during open "bitmap" file Date: Sun, 12 Jun 2022 15:44:20 +0800 Message-Id: X-Mailer: git-send-email 2.35.1.582.g320e881567 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org It's supported for a repo to use bitmap in both "NORMAL" bitmap way or a MIDX (multi-pack-index) bitmap. Either of two bitmap kinds can exist in the repository, or both can be stored but let the config controls which kind of bitmap is used (like "core.multipackIndex", etc.). Because of this, sometimes the bitmap debug path is not obvious enough, for example, when executing: $git rev-list --test-bitmap HEAD fatal: failed to load bitmap indexes If we see the output like this, It's not sure for us to know what's happened concretely, because the cause should be : 1. Neither normal nor MIDX bitmap exists. 2. Only MIDX bitmap exists but core.multipackIndex="false". 3. Config core.multipackIndex set to "true" but MIDX bitmap is corrupted. 4. Config core.multipackIndex set to "true" and no MIDX bitmap exists but normal bitmap file is corrupted. .... These are some of the scenarios I briefly tested, but maybe there are others (some scenarios is produced manually like "corrupted bitmap file", but it's not represent it's an existed bug.). Therefore, we added some TRACE2 code so that when we read the bitmap we can be more clear about the decision path, such as whether it is working on MIDX or NORMAL bitmap at present, or the related config is enabled or not. This may help with logging, user troubleshooting, and development debugging. Here are some brief output examples on different scenarios when executing: $GIT_TRACE2_PERF=1 git rev-list --test-bitmap HEAD Scenario 1: core.multipackIndex [false], midx bitmap exists [Y], normal bitmap exists [N] 19:21:56.580349 repo-settings.c:11 | d0 | main | data | r1 | 0.000827 | 0.000827 | config | core.multipackindex:false 19:21:56.580356 repo-settings.c:11 | d0 | main | data | r1 | 0.000834 | 0.000834 | config | index.sparse:false 19:21:56.580706 pack-bitmap.c:525 | d0 | main | region_enter | r1 | 0.001183 | | pack-bitmap | label:open_bitmap 19:21:56.580719 pack-bitmap.c:386 | d0 | main | data | r1 | 0.001196 | 0.000013 | bitmap | ..path:.git/objects/pack/pack-e9eb18e6a423057f4424a762069e13804a75d01e.bitmap 19:21:56.580729 pack-bitmap.c:530 | d0 | main | region_leave | r1 | 0.001207 | 0.000024 | pack-bitmap | label:open_bitmap 19:21:56.580737 usage.c:60 | d0 | main | error | | | | | failed to load bitmap indexes fatal: failed to load bitmap indexes 19:21:56.580746 usage.c:74 | d0 | main | exit | | 0.001224 | | | code:128 19:21:56.580754 trace2/tr2_tgt_perf.c:215 | d0 | main | atexit | | 0.001232 | | | code:128 Scenario 2: core.multipackIndex [false], midx bitmap exists [Y], normal bitmap exists [Y] 19:23:44.692384 repo-settings.c:11 | d0 | main | data | r0 | 0.000765 | 0.000765 | config | core.multipackindex:false 19:23:44.692755 pack-bitmap.c:525 | d0 | main | region_enter | r0 | 0.001135 | | pack-bitmap | label:open_bitmap 19:23:44.692768 pack-bitmap.c:386 | d0 | main | data | r0 | 0.001149 | 0.000014 | bitmap | ..path:/home/tenglong.tl/test/dyrone_bitmap/.git/objects/pack/pack-e9eb18e6a423057f4424a762069e13804a75d01e.bitmap 19:23:44.692790 pack-bitmap.c:530 | d0 | main | region_leave | r0 | 0.001171 | 0.000036 | pack-bitmap | label:open_bitmap Bitmap v1 test (1 entries loaded) Found bitmap for d864fefa87415d6cd289c72aa9ffd45b4a8ffd84. 64 bits / 11030517 checksum 19:23:44.693119 progress.c:268 | d0 | main | region_enter | r0 | 0.001500 | | progress | label:Verifying bitmap entries Verifying bitmap entries: 100% (3/3), done. 19:23:44.693208 progress.c:339 | d0 | main | data | r0 | 0.001589 | 0.000089 | progress | ..total_objects:3 19:23:44.693216 progress.c:346 | d0 | main | region_leave | r0 | 0.001597 | 0.000097 | progress | label:Verifying bitmap entries OK! 19:23:44.693234 git.c:718 | d0 | main | exit | | 0.001615 | | | code:0 19:23:44.693244 trace2/tr2_tgt_perf.c:215 | d0 | main | atexit | | 0.001625 | | | code:0 Scenario 3: core.multipackIndex [true], midx bitmap exists [Y], normal bitmap exists [Y] 19:26:03.625055 repo-settings.c:11 | d0 | main | data | r0 | 0.000760 | 0.000760 | config | core.multipackindex:true 19:26:03.625090 midx.c:185 | d0 | main | data | r0 | 0.000795 | 0.000795 | midx | load/num_packs:1 19:26:03.625097 midx.c:186 | d0 | main | data | r0 | 0.000803 | 0.000803 | midx | load/num_objects:3 19:26:03.625455 pack-bitmap.c:525 | d0 | main | region_enter | r0 | 0.001160 | | pack-bitmap | label:open_bitmap 19:26:03.625470 pack-bitmap.c:318 | d0 | main | data | r0 | 0.001175 | 0.000015 | midx | ..path:/home/tenglong.tl/test/dyrone_bitmap/.git/objects/pack/multi-pack-index-fe8e96790bd34926423bdf3efd762dbbea9f3213.bitmap 19:26:03.625489 pack-revindex.c:315 | d0 | main | data | r0 | 0.001194 | 0.000034 | load_midx_re | ..source:midx 19:26:03.625496 pack-bitmap.c:530 | d0 | main | region_leave | r0 | 0.001202 | 0.000042 | pack-bitmap | label:open_bitmap Bitmap v1 test (1 entries loaded) Found bitmap for d864fefa87415d6cd289c72aa9ffd45b4a8ffd84. 64 bits / 11030517 checksum 19:26:03.625818 progress.c:268 | d0 | main | region_enter | r0 | 0.001523 | | progress | label:Verifying bitmap entries Verifying bitmap entries: 100% (3/3), done. 19:26:03.625916 progress.c:339 | d0 | main | data | r0 | 0.001622 | 0.000099 | progress | ..total_objects:3 19:26:03.625925 progress.c:346 | d0 | main | region_leave | r0 | 0.001630 | 0.000107 | progress | label:Verifying bitmap entries OK! 19:26:03.625943 git.c:718 | d0 | main | exit | | 0.001648 | | | code:0 19:26:03.625952 trace2/tr2_tgt_perf.c:215 | d0 | main | atexit | | 0.001658 | | | code:0 Situation 4: core.multipackIndex [false], midx bitmap exists [N], normal bitmap exists [Y]. 19:27:15.383037 repo-settings.c:11 | d0 | main | data | r0 | 0.000746 | 0.000746 | config | core.multipackindex:true 19:27:15.383397 pack-bitmap.c:525 | d0 | main | region_enter | r0 | 0.001105 | | pack-bitmap | label:open_bitmap 19:27:15.383408 pack-bitmap.c:386 | d0 | main | data | r0 | 0.001116 | 0.000011 | bitmap | ..path:/home/tenglong.tl/test/dyrone_bitmap/.git/objects/pack/pack-e9eb18e6a423057f4424a762069e13804a75d01e.bitmap 19:27:15.383419 pack-bitmap.c:530 | d0 | main | region_leave | r0 | 0.001128 | 0.000023 | pack-bitmap | label:open_bitmap Bitmap v1 test (1 entries loaded) Found bitmap for d864fefa87415d6cd289c72aa9ffd45b4a8ffd84. 64 bits / 11030517 checksum 19:27:15.383730 progress.c:268 | d0 | main | region_enter | r0 | 0.001439 | | progress | label:Verifying bitmap entries Verifying bitmap entries: 100% (3/3), done. 19:27:15.383822 progress.c:339 | d0 | main | data | r0 | 0.001531 | 0.000092 | progress | ..total_objects:3 19:27:15.383830 progress.c:346 | d0 | main | region_leave | r0 | 0.001539 | 0.000100 | progress | label:Verifying bitmap entries OK! 19:27:15.383848 git.c:718 | d0 | main | exit | | 0.001557 | | | code:0 19:27:15.383867 trace2/tr2_tgt_perf.c:215 | d0 | main | atexit | | 0.001576 | | | code:0 Scenario 5: core.multipackIndex [true], midx bitmap exists [Y] but corrupted, normal bitmap exists [Y] 19:29:25.888233 repo-settings.c:11 | d0 | main | data | r0 | 0.000794 | 0.000794 | config | core.multipackindex:true 19:29:25.888591 pack-bitmap.c:525 | d0 | main | region_enter | r0 | 0.001152 | | pack-bitmap | label:open_bitmap 19:29:25.888603 pack-bitmap.c:386 | d0 | main | data | r0 | 0.001163 | 0.000011 | bitmap | ..path:/home/tenglong.tl/test/dyrone_bitmap/.git/objects/pack/pack-e9eb18e6a423057f4424a762069e13804a75d01e.bitmap 19:29:25.888622 usage.c:79 | d0 | main | error | | | | | ..Corrupted bitmap index file (wrong header) error: Corrupted bitmap index file (wrong header) 19:29:25.888638 usage.c:79 | d0 | main | error | | | | | ..bitmap header is invalid error: bitmap header is invalid 19:29:25.888650 pack-bitmap.c:530 | d0 | main | region_leave | r0 | 0.001211 | 0.000059 | pack-bitmap | label:open_bitmap 19:29:25.888659 usage.c:60 | d0 | main | error | | | | | failed to load bitmap indexes fatal: failed to load bitmap indexes 19:29:25.888670 usage.c:74 | d0 | main | exit | | 0.001231 | | | code:128 19:29:25.888680 trace2/tr2_tgt_perf.c:215 | d0 | main | atexit | | 0.001241 | | | code:128 Signed-off-by: Teng Long --- pack-bitmap.c | 27 +++++++++++++++++++++------ repo-settings.c | 1 + 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/pack-bitmap.c b/pack-bitmap.c index 5654eb7b8d..ced5993560 100644 --- a/pack-bitmap.c +++ b/pack-bitmap.c @@ -312,9 +312,11 @@ char *pack_bitmap_filename(struct packed_git *p) static int open_midx_bitmap_1(struct bitmap_index *bitmap_git, struct multi_pack_index *midx) { + int fd; struct stat st; char *bitmap_name = midx_bitmap_filename(midx); - int fd = git_open(bitmap_name); + trace2_data_string("midx", the_repository, "path", bitmap_name); + fd = git_open(bitmap_name); free(bitmap_name); @@ -343,12 +345,19 @@ static int open_midx_bitmap_1(struct bitmap_index *bitmap_git, MAP_PRIVATE, fd, 0); close(fd); - if (load_bitmap_header(bitmap_git) < 0) + if (load_bitmap_header(bitmap_git) < 0) { + trace2_data_string("midx", the_repository, "load bitmap header", + "failed"); goto cleanup; + } - if (!hasheq(get_midx_checksum(bitmap_git->midx), bitmap_git->checksum)) + if (!hasheq(get_midx_checksum(bitmap_git->midx), bitmap_git->checksum)) { + trace2_data_string("midx", the_repository, "verify checksum", + "mismatch"); goto cleanup; + } + if (load_midx_revindex(bitmap_git->midx) < 0) { warning(_("multi-pack bitmap is missing required reverse index")); goto cleanup; @@ -374,6 +383,7 @@ static int open_pack_bitmap_1(struct bitmap_index *bitmap_git, struct packed_git return -1; bitmap_name = pack_bitmap_filename(packfile); + trace2_data_string("bitmap", the_repository, "path", bitmap_name); fd = git_open(bitmap_name); free(bitmap_name); @@ -509,11 +519,16 @@ static int open_midx_bitmap(struct repository *r, static int open_bitmap(struct repository *r, struct bitmap_index *bitmap_git) { - assert(!bitmap_git->map); + int ret = 0; + assert(!bitmap_git->map); + trace2_region_enter("pack-bitmap", "open_bitmap", r); if (!open_midx_bitmap(r, bitmap_git)) - return 0; - return open_pack_bitmap(r, bitmap_git); + goto done; + ret = open_pack_bitmap(r, bitmap_git); +done: + trace2_region_leave("pack-bitmap", "open_bitmap", r); + return ret; } struct bitmap_index *prepare_bitmap_git(struct repository *r) diff --git a/repo-settings.c b/repo-settings.c index b4fbd16cdc..5bc7a97a6d 100644 --- a/repo-settings.c +++ b/repo-settings.c @@ -8,6 +8,7 @@ static void repo_cfg_bool(struct repository *r, const char *key, int *dest, { if (repo_config_get_bool(r, key, dest)) *dest = def; + trace2_data_string("config", r, key, *dest ? "true" : "false"); } void prepare_repo_settings(struct repository *r)