git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 1/7] files_transaction_prepare(): don't leak flags to packed transaction

From
Junio C Hamano <gitster@pobox.com>
Date
Nov 6, 2017, 01:28 UTC
Message-ID
<xmqqshdsjiuz.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<4d2e6a29-e612-2eab-1b20-0c97a8871c5c@alum.mit.edu>
Michael Haggerty <mhagger@alum.mit.edu> writes:
Show 19 quoted lines
>> That much I can understand.  But it is not explained why (1) we do
>> not pass old_oid anymore and (2) we do give HAVE_NEW.  
>> 
>> Presumably the justification for (1) is something like "because we
>> are not passing HAVE_OLD, we shouldn't have been passing old_oid at
>> all---it was a harmless bug because lack of HAVE_OLD made the callee
>> ignore old_oid"
>
> It's debatable whether the old code should even be called a bug. The
> callee is documented to ignore `old_oid` if `HAVE_OLD` is not set. But
> it was certainly misleading to pass unneeded information to the function.
>
>>                     (2) is "we need to pass HAVE_NEW, and we have
>> been always passing HAVE_NEW because update->flags at this point is
>> guaranteed to have it" or something like that?
>
> Correct. `REF_DELETING` is set by `lock_ref_for_update()` only if
> `update->flags & REF_HAVE_NEW` was set, and this code is only called if
> `REF_DELETING` is set.

It is is extra nice for you to give answers that are customized for me like the above to my questions, but the questions came because the log message did not answer them, so please make sure the next person who did not read this exchange but reads only the resulting commit does not have to ask the same question.

Thanks.
Previous: Michael HaggertyNext: Michael Haggerty
Message 7 of 14 in “Tidy up the constants related to ref_update::flags”
  1. 0/7 Tidy up the constants related to ref_update::flagsMichael Haggerty, Oct 28, 2017
  2. 2/7 prune_ref(): call `ref_transaction_add_update()` directlyMichael Haggerty, Oct 28, 2017
  3. 3/7 ref_transaction_update(): die on disallowed flagsMichael Haggerty, Oct 28, 2017
  4. 1/7 files_transaction_prepare(): don't leak flags to packed transactionMichael Haggerty, Oct 28, 2017
  5. Junio C HamanoOct 30, 2017
  6. Michael HaggertyNov 5, 2017
  7. Junio C HamanoNov 6, 2017
  8. 4/7 ref_transaction_add_update(): remove a checkMichael Haggerty, Oct 28, 2017
  9. 6/7 refs: rename constant `REF_NODEREF` to `REF_NO_DEREF`Michael Haggerty, Oct 28, 2017
  10. Junio C HamanoOct 30, 2017
  11. 5/7 refs: tidy up and adjust visibility of the `ref_update` flagsMichael Haggerty, Oct 28, 2017
  12. Martin ÅgrenNov 1, 2017
  13. Michael HaggertyNov 5, 2017
  14. 7/7 refs: rename constant `REF_ISPRUNING` to `REF_IS_PRUNING`Michael Haggerty, Oct 28, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.