From: Patrick Steinhardt Date: Wed, 07 Jan 2026 13:07:59 GMT Subject: [PATCH v4 0/7] Improvements for reading object info Message-ID: <20260107-b4-pks-odb-read-object-info-improvements-v4-0-b5d55c47082a@pks.im> In-Reply-To: <20251218-b4-pks-odb-read-object-info-improvements-v1-0-81c8368492be@pks.im> Hi, this patch series contains various small improvements for reading object info for either loose or packed objects. These improvements were split out of a larger patch series where I'm about to introduce a new generic `odb_for_each_object()` function. Changes in v4: - Extend the fix for OI_LOOSE and refactor the whole function to have a single exit path as proposed by Karthik. This results in a lot more changes, but makes the function way easier to reason about going forward. - Link to v3: https://lore.kernel.org/r/20260106-b4-pks-odb-read-object-info-improvements-v3-0-b5e02fae1fb0@pks.im Changes in v3: - Fix a commit message typo. - Fix a function comment missing some words. - Link to v2: https://lore.kernel.org/r/20251218-b4-pks-odb-read-object-info-improvements-v2-0-62e3e49072bc@pks.im Changes in v2: - Rebase the series on top of master with jc/object-read-stream-fix merged into it. I've also evicted the patch that fixes the same underlying issue. - Improve the commit message that drops OI_DBCACHED to explain why this is a safe refactoring. - Link to v1: https://lore.kernel.org/r/20251218-b4-pks-odb-read-object-info-improvements-v1-0-81c8368492be@pks.im Thanks! Patrick --- Patrick Steinhardt (7): object-file: always set OI_LOOSE when reading object info packfile: always declare object info to be OI_PACKED packfile: extend `is_delta` field to allow for "unknown" state packfile: always populate pack-specific info when reading object info packfile: disentangle return value of `packed_object_info()` packfile: skip unpacking object header for disk size requests packfile: drop repository parameter from `packed_object_info()` builtin/cat-file.c | 3 +- builtin/pack-objects.c | 4 +- commit-graph.c | 2 +- object-file.c | 115 ++++++++++++++++++++++++++++++------------------- odb.h | 8 +++- pack-bitmap.c | 3 +- packfile.c | 61 +++++++++++++++----------- packfile.h | 7 ++- 8 files changed, 124 insertions(+), 79 deletions(-) Range-diff versus v3: 1: 5c67d9abe8 < -: ---------- object-file: always set OI_LOOSE when reading object info -: ---------- > 1: 7708b50c2a object-file: always set OI_LOOSE when reading object info 2: 8b106feb28 = 2: a96ac5b351 packfile: always declare object info to be OI_PACKED 3: adbd3e5ae5 = 3: 8e3193a06e packfile: extend `is_delta` field to allow for "unknown" state 4: 218c64c9a5 = 4: e718161286 packfile: always populate pack-specific info when reading object info 5: dcae7be795 = 5: 217bec7e3b packfile: disentangle return value of `packed_object_info()` 6: beac514592 = 6: 2aaacfd639 packfile: skip unpacking object header for disk size requests 7: dacccf1cb4 = 7: a9e37b7e00 packfile: drop repository parameter from `packed_object_info()` --- base-commit: 7df68b50e49b6a1b576abb19b2e5d457749bc28b change-id: 20251215-b4-pks-odb-read-object-info-improvements-0e031ef827d2