From: Taylor Blau <me@ttaylorr.com> To: Jeff King <peff@peff.net> Cc: Taylor Blau <me@ttaylorr.com>, git@vger.kernel.org, jrnieder@gmail.com Subject: Re: [PATCH 01/20] pack-revindex: introduce a new API Date: Tue, 12 Jan 2021 11:27:58 -0500 Message-ID: <X/3ODgaa9wr65M09@nand.local> (raw) In-Reply-To: <X/1guCOGWybOzIS7@coredump.intra.peff.net> On Tue, Jan 12, 2021 at 03:41:28AM -0500, Jeff King wrote: > > There are four ways to interact with the reverse index. Accordingly, > > four functions will be exported from 'pack-revindex.h' by the time that > > the existing API is removed. A caller may: > > This tells us what the new API functions do. That's useful, but should > it be in the header file itself, documenting each function? Mm, that's a good idea. I took your suggestion for a comment at the top of pack-revindex.h directly, and then added some of my own commentary above each function. I avoided documenting the functions we're about to remove for obvious reasons. I think that the commit message is OK as-is, since it provides more of a rationale of what operations need to exist, rather than the specifics of each implementation. We'll have to update these again when the on-disk format exists (i.e., because all of the runtimes become constant with the exception of going to the index), but that's a topic for another series. > > +int offset_to_pack_pos(struct packed_git *p, off_t ofs, uint32_t *pos) > > The types here make sense. off_t is clearly needed for a pack offset, > and uint32_t is correct for the position fields, because packs have a > 4-byte object count. > > Separating the error return from the out-parameter makes the interface > slightly more awkward, but is needed to use the properly-sized types. > Makes sense. Yep, exactly. > > +int offset_to_pack_pos(struct packed_git *p, off_t ofs, uint32_t *pos) > > +{ > > + int ret; > > + > > + if (load_pack_revindex(p) < 0) > > + return -1; > > This one lazy-loads the revindex for us, which seems handy... > > > +uint32_t pack_pos_to_index(struct packed_git *p, uint32_t pos) > > +{ > > + if (!p->revindex) > > + BUG("pack_pos_to_index: reverse index not yet loaded"); > > + if (pos >= p->num_objects) > > + BUG("pack_pos_to_index: out-of-bounds object at %"PRIu32, pos); > > + return p->revindex[pos].nr; > > +} > > But these ones don't. I'm glad we at least catch it with a BUG(), but it > makes the API a little funny. Returning an error here would require a > similarly awkward out-parameter, I guess. It is awkward, but (as you note downthread) the callers of pack_pos_to_index() make it difficult to do so, so I didn't pursue it here. > -Peff Thanks, Taylor
next prev parent reply index Thread overview: 121+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-01-08 18:16 [PATCH 00/20] pack-revindex: prepare for on-disk reverse index Taylor Blau 2021-01-08 18:16 ` [PATCH 01/20] pack-revindex: introduce a new API Taylor Blau 2021-01-12 8:41 ` Jeff King 2021-01-12 9:41 ` Jeff King 2021-01-12 16:27 ` Taylor Blau [this message] 2021-01-13 8:06 ` Junio C Hamano 2021-01-13 8:54 ` Junio C Hamano 2021-01-13 13:17 ` Jeff King 2021-01-13 16:23 ` Taylor Blau 2021-01-08 18:16 ` [PATCH 02/20] write_reuse_object(): convert to new revindex API Taylor Blau 2021-01-12 8:47 ` Jeff King 2021-01-12 16:31 ` Taylor Blau 2021-01-13 13:02 ` Jeff King 2021-01-08 18:16 ` [PATCH 03/20] write_reused_pack_one(): " Taylor Blau 2021-01-12 8:50 ` Jeff King 2021-01-12 16:34 ` Taylor Blau 2021-01-08 18:16 ` [PATCH 04/20] write_reused_pack_verbatim(): " Taylor Blau 2021-01-12 8:50 ` Jeff King 2021-01-08 18:17 ` [PATCH 05/20] check_object(): " Taylor Blau 2021-01-11 11:43 ` Derrick Stolee 2021-01-11 16:15 ` Taylor Blau 2021-01-12 8:54 ` Jeff King 2021-01-12 8:51 ` Jeff King 2021-01-08 18:17 ` [PATCH 06/20] bitmap_position_packfile(): " Taylor Blau 2021-01-08 18:17 ` [PATCH 07/20] show_objects_for_type(): " Taylor Blau 2021-01-12 8:57 ` Jeff King 2021-01-12 16:35 ` Taylor Blau 2021-01-08 18:17 ` [PATCH 08/20] get_size_by_pos(): " Taylor Blau 2021-01-08 18:17 ` [PATCH 09/20] try_partial_reuse(): " Taylor Blau 2021-01-12 9:06 ` Jeff King 2021-01-12 16:47 ` Taylor Blau 2021-01-08 18:17 ` [PATCH 10/20] rebuild_existing_bitmaps(): " Taylor Blau 2021-01-08 18:17 ` [PATCH 11/20] get_delta_base_oid(): " Taylor Blau 2021-01-08 18:17 ` [PATCH 12/20] retry_bad_packed_offset(): " Taylor Blau 2021-01-08 18:17 ` [PATCH 13/20] packed_object_info(): " Taylor Blau 2021-01-12 9:11 ` Jeff King 2021-01-12 16:51 ` Taylor Blau 2021-01-08 18:17 ` [PATCH 14/20] unpack_entry(): " Taylor Blau 2021-01-12 9:22 ` Jeff King 2021-01-12 16:56 ` Taylor Blau 2021-01-08 18:17 ` [PATCH 15/20] for_each_object_in_pack(): " Taylor Blau 2021-01-08 18:17 ` [PATCH 16/20] builtin/gc.c: guess the size of the revindex Taylor Blau 2021-01-11 11:52 ` Derrick Stolee 2021-01-11 16:23 ` Taylor Blau 2021-01-11 17:09 ` Derrick Stolee 2021-01-12 9:28 ` Jeff King 2021-01-08 18:17 ` [PATCH 17/20] pack-revindex: remove unused 'find_pack_revindex()' Taylor Blau 2021-01-08 18:17 ` [PATCH 18/20] pack-revindex: remove unused 'find_revindex_position()' Taylor Blau 2021-01-11 11:57 ` Derrick Stolee 2021-01-11 16:27 ` Taylor Blau 2021-01-11 17:11 ` Derrick Stolee 2021-01-12 9:32 ` Jeff King 2021-01-12 16:59 ` Taylor Blau 2021-01-13 13:05 ` Jeff King 2021-01-08 18:18 ` [PATCH 19/20] pack-revindex: hide the definition of 'revindex_entry' Taylor Blau 2021-01-11 11:57 ` Derrick Stolee 2021-01-12 9:34 ` Jeff King 2021-01-08 18:18 ` [PATCH 20/20] pack-revindex.c: avoid direct revindex access in 'offset_to_pack_pos()' Taylor Blau 2021-01-12 9:37 ` Jeff King 2021-01-12 17:02 ` Taylor Blau 2021-01-11 12:07 ` [PATCH 00/20] pack-revindex: prepare for on-disk reverse index Derrick Stolee 2021-01-11 16:30 ` Taylor Blau 2021-01-11 17:15 ` Derrick Stolee 2021-01-11 17:29 ` Taylor Blau 2021-01-11 18:40 ` Junio C Hamano 2021-01-12 9:45 ` Jeff King 2021-01-12 17:07 ` Taylor Blau 2021-01-13 0:23 ` Junio C Hamano 2021-01-13 0:52 ` Taylor Blau 2021-01-13 2:15 ` Junio C Hamano 2021-01-13 3:23 ` Taylor Blau 2021-01-13 8:21 ` Junio C Hamano 2021-01-13 13:13 ` Jeff King 2021-01-13 15:34 ` Taylor Blau 2021-01-13 20:06 ` Junio C Hamano 2021-01-13 20:13 ` Taylor Blau 2021-01-13 20:22 ` Jeff King 2021-01-13 22:23 ` [PATCH v2 " Taylor Blau 2021-01-13 22:23 ` [PATCH v2 01/20] pack-revindex: introduce a new API Taylor Blau 2021-01-14 6:46 ` Junio C Hamano 2021-01-14 12:00 ` Derrick Stolee 2021-01-14 17:06 ` Taylor Blau 2021-01-14 19:19 ` Jeff King 2021-01-14 20:47 ` Junio C Hamano 2021-01-13 22:23 ` [PATCH v2 02/20] write_reuse_object(): convert to new revindex API Taylor Blau 2021-01-13 22:23 ` [PATCH v2 03/20] write_reused_pack_one(): " Taylor Blau 2021-01-13 22:23 ` [PATCH v2 04/20] write_reused_pack_verbatim(): " Taylor Blau 2021-01-13 22:23 ` [PATCH v2 05/20] check_object(): " Taylor Blau 2021-01-13 22:23 ` [PATCH v2 06/20] bitmap_position_packfile(): " Taylor Blau 2021-01-13 22:23 ` [PATCH v2 07/20] show_objects_for_type(): " Taylor Blau 2021-01-13 22:24 ` [PATCH v2 08/20] get_size_by_pos(): " Taylor Blau 2021-01-13 22:24 ` [PATCH v2 09/20] try_partial_reuse(): " Taylor Blau 2021-01-13 22:24 ` [PATCH v2 10/20] rebuild_existing_bitmaps(): " Taylor Blau 2021-01-13 22:24 ` [PATCH v2 11/20] get_delta_base_oid(): " Taylor Blau 2021-01-13 22:24 ` [PATCH v2 12/20] retry_bad_packed_offset(): " Taylor Blau 2021-01-13 22:24 ` [PATCH v2 13/20] packed_object_info(): " Taylor Blau 2021-01-13 22:24 ` [PATCH v2 14/20] unpack_entry(): " Taylor Blau 2021-01-13 22:24 ` [PATCH v2 15/20] for_each_object_in_pack(): " Taylor Blau 2021-01-14 6:43 ` Junio C Hamano 2021-01-14 17:00 ` Taylor Blau 2021-01-14 19:33 ` Jeff King 2021-01-14 20:11 ` Jeff King 2021-01-14 20:15 ` Taylor Blau 2021-01-15 2:22 ` Junio C Hamano 2021-01-15 2:29 ` Taylor Blau 2021-01-14 20:51 ` Junio C Hamano 2021-01-13 22:24 ` [PATCH v2 16/20] builtin/gc.c: guess the size of the revindex Taylor Blau 2021-01-14 6:33 ` Junio C Hamano 2021-01-14 16:53 ` Taylor Blau 2021-01-14 19:43 ` Jeff King 2021-01-13 22:24 ` [PATCH v2 17/20] pack-revindex: remove unused 'find_pack_revindex()' Taylor Blau 2021-01-13 22:25 ` [PATCH v2 18/20] pack-revindex: remove unused 'find_revindex_position()' Taylor Blau 2021-01-14 6:42 ` Junio C Hamano 2021-01-13 22:25 ` [PATCH v2 19/20] pack-revindex: hide the definition of 'revindex_entry' Taylor Blau 2021-01-13 22:25 ` [PATCH v2 20/20] pack-revindex.c: avoid direct revindex access in 'offset_to_pack_pos()' Taylor Blau 2021-01-14 6:42 ` Junio C Hamano 2021-01-14 16:56 ` Taylor Blau 2021-01-14 19:51 ` [PATCH v2 00/20] pack-revindex: prepare for on-disk reverse index Jeff King 2021-01-14 20:53 ` Junio C Hamano 2021-01-15 9:32 ` Jeff King 2021-01-15 9:33 ` Jeff King
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=X/3ODgaa9wr65M09@nand.local \ --to=me@ttaylorr.com \ --cc=git@vger.kernel.org \ --cc=jrnieder@gmail.com \ --cc=peff@peff.net \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Mailing List Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/git/0 git/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 git git/ https://lore.kernel.org/git \ git@vger.kernel.org public-inbox-index git Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.git AGPL code for this site: git clone https://public-inbox.org/public-inbox.git