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

Re: [PATCH v8 4/4] cache-tree: Write updated cache-tree after commit

From
Junio C Hamano <gitster@pobox.com>
Date
Jul 14, 2014, 15:54 UTC
Message-ID
<xmqqr41oylyo.fsf@gitster.dls.corp.google.com>
In-Reply-To
<CACsJy8D0CdS5B5xNSSCk+LToXV9FnHFLkPzJ5f-7NTWiw9yn5w@mail.gmail.com>
Duy Nguyen <pclouds@gmail.com> writes:
Show 15 quoted lines
> On Sat, Jul 12, 2014 at 11:44 AM, David Turner <dturner@twopensource.com> wrote:
>> @@ -342,6 +342,15 @@ static char *prepare_index(int argc, const char **argv, const char *prefix,
>>
>>                 discard_cache();
>>                 read_cache_from(index_lock.filename);
>> +               if (update_main_cache_tree(WRITE_TREE_SILENT) == 0) {
>> +                       fd = open(index_lock.filename, O_WRONLY);
>> +                       if (fd >= 0)
>> +                               if (write_cache(fd, active_cache, active_nr) == 0) {
>> +                                       close_lock_file(&index_lock);
>
> If write_cache() returns a negative value, index.lock is probably
> corrupted. Should we die() instead of moving on and returning
> index_lock.filename to the caller? The caller may move index.lock to
> index later on and officially ruin "index".

Perhaps true, but worse yet, this will not play nicely together with your split index series, no? After taking the lock and writing and closing, we spawn the interactive while still holding the lock, and the "open" we see here is because we want to further update the same under the same lock. Perhaps write_locked_index() API in the split index series can notice that the underlying fd in index_lock has been closed earlier, realize that the call is to re-update the index under the same lock and open the file again for writing?

Then we can update the above "open() then write_cache()" sequence with just a call to "write_locked_index()".

Previous: Duy NguyenNext: Ramsay Jones
Message 6 of 28 in “cache-tree: Create/update cache-tree on checkout”
  1. 1/4 cache-tree: Create/update cache-tree on checkoutDavid Turner, Jul 12, 2014
  2. 2/4 test-dump-cache-tree: invalid trees are not errorsDavid Turner, Jul 12, 2014
  3. 3/4 cache-tree: subdirectory testsDavid Turner, Jul 12, 2014
  4. 4/4 cache-tree: Write updated cache-tree after commitDavid Turner, Jul 12, 2014
  5. Duy NguyenJul 13, 2014
  6. Junio C HamanoJul 14, 2014
  7. Ramsay JonesJul 14, 2014
  8. Junio C HamanoJul 14, 2014
  9. Ramsay JonesJul 14, 2014
  10. Junio C HamanoJul 14, 2014
  11. David TurnerJul 14, 2014
  12. Duy NguyenJul 15, 2014
  13. Junio C HamanoJul 15, 2014
  14. Duy NguyenJul 15, 2014
  15. Junio C HamanoJul 15, 2014
  16. Duy NguyenJul 16, 2014
  17. Junio C HamanoJul 16, 2014
  18. Junio C HamanoJul 14, 2014
  19. lockfile: allow reopening a closed but still locked fileJunio C Hamano, Jul 14, 2014
  20. John KeepingAug 31, 2014
  21. David TurnerSep 1, 2014
  22. John KeepingSep 1, 2014
  23. Junio C HamanoSep 2, 2014
  24. Junio C HamanoSep 2, 2014
  25. cache-tree: propagate invalidation up when puntingJunio C Hamano, Sep 2, 2014
  26. cache-tree: do not try to use an invalidated subtree info to build a treeJunio C Hamano, Sep 2, 2014
  27. David TurnerSep 3, 2014
  28. Eric SunshineSep 3, 2014

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.