From: Junio C Hamano <gitster@pobox.com>
To: Duy Nguyen <pclouds@gmail.com>
Cc: David Turner <dturner@twopensource.com>,
Git Mailing List <git@vger.kernel.org>,
David Turner <dturner@twitter.com>
Subject: Re: [PATCH v8 4/4] cache-tree: Write updated cache-tree after commit
Date: Mon, 14 Jul 2014 08:54:55 -0700 [thread overview]
Message-ID: <xmqqr41oylyo.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <CACsJy8D0CdS5B5xNSSCk+LToXV9FnHFLkPzJ5f-7NTWiw9yn5w@mail.gmail.com> (Duy Nguyen's message of "Sun, 13 Jul 2014 12:09:25 +0700")
Duy Nguyen <pclouds@gmail.com> writes:
> 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()".
next prev parent reply other threads:[~2014-07-14 15:55 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-12 4:44 [PATCH v8 1/4] cache-tree: Create/update cache-tree on checkout David Turner
2014-07-12 4:44 ` [PATCH v8 2/4] test-dump-cache-tree: invalid trees are not errors David Turner
2014-07-12 4:44 ` [PATCH v8 3/4] cache-tree: subdirectory tests David Turner
2014-07-12 4:44 ` [PATCH v8 4/4] cache-tree: Write updated cache-tree after commit David Turner
2014-07-13 5:09 ` Duy Nguyen
2014-07-14 15:54 ` Junio C Hamano [this message]
2014-07-14 17:33 ` Ramsay Jones
2014-07-14 17:51 ` Junio C Hamano
2014-07-14 18:41 ` Ramsay Jones
2014-07-14 22:16 ` Junio C Hamano
2014-07-14 22:32 ` David Turner
2014-07-15 2:15 ` Duy Nguyen
2014-07-15 6:38 ` Junio C Hamano
2014-07-15 10:23 ` Duy Nguyen
2014-07-15 16:45 ` Junio C Hamano
2014-07-16 10:18 ` Duy Nguyen
2014-07-16 17:33 ` Junio C Hamano
2014-07-14 17:43 ` Junio C Hamano
2014-07-14 20:19 ` [PATCH v2] lockfile: allow reopening a closed but still locked file Junio C Hamano
2014-08-31 12:07 ` [PATCH v8 1/4] cache-tree: Create/update cache-tree on checkou John Keeping
2014-09-01 20:49 ` David Turner
2014-09-01 22:13 ` John Keeping
2014-09-02 20:52 ` Junio C Hamano
2014-09-02 21:10 ` Junio C Hamano
2014-09-02 21:24 ` [PATCH] cache-tree: propagate invalidation up when punting Junio C Hamano
2014-09-02 22:39 ` [PATCH v2] cache-tree: do not try to use an invalidated subtree info to build a tree Junio C Hamano
2014-09-03 2:56 ` David Turner
2014-09-03 12:02 ` Eric Sunshine
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=xmqqr41oylyo.fsf@gitster.dls.corp.google.com \
--to=gitster@pobox.com \
--cc=dturner@twitter.com \
--cc=dturner@twopensource.com \
--cc=git@vger.kernel.org \
--cc=pclouds@gmail.com \
/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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.