git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Duy Nguyen <pclouds@gmail.com>
To: David Turner <dturner@twopensource.com>
Cc: Junio C Hamano <gitster@pobox.com>,
	Git Mailing List <git@vger.kernel.org>,
	Ramsay Jones <ramsay@ramsayjones.plus.com>
Subject: Re: [PATCH v6 03/19] index-helper: new daemon for caching index and related stuff
Date: Sun, 1 May 2016 07:22:01 +0700	[thread overview]
Message-ID: <CACsJy8AZihi2j=LLqhPvvLm2PPR4KZne2y9ENR4YDgY+tOXo0A@mail.gmail.com> (raw)
In-Reply-To: <1461955617.4123.37.camel@twopensource.com>

On Sat, Apr 30, 2016 at 1:46 AM, David Turner <dturner@twopensource.com> wrote:
> On Thu, 2016-04-28 at 11:58 -0700, Junio C Hamano wrote:
>> David Turner <dturner@twopensource.com> writes:
>>
>> > From: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
>> > ...
>> > The biggest gain is not having to verify the trailing SHA-1, which
>> > takes lots of time especially on large index files. But this also
>> > opens doors for further optimiztions:
>>
>> optimizAtion
>>
>> > Git can poke the daemon via unix domain sockets to tell it to
>> > refresh
>> > the index cache, or to keep it alive some more minutes. It can't
>> > give
>> > any real index data directly to the daemon. Real data goes to disk
>> > first, then the daemon reads and verifies it from there. Poking
>> > only
>> > happens for $GIT_DIR/index, not temporary index files.
>>
>> Is this limited to "poking", or the helper daemon is not involved in
>> codepaths that handle temporary index at all?  It makes sense if it
>> is the latter, and it doesn't if it were the former, but it is
>> unclear in this paragraph.
>
> It is in fact the latter.  Will clarify.

The intention is so. The execution is less than perfect. On the server
side, the index-helper only concerns itself with .git/index only.
Good. On the client side, is_main_index() is used to detect if it's
$GIT_DIR/index. It checks if the given index_state pointer points to
the_index and if so assumes that it is the main index.

That is not true when read_cache_from() is used with something other
than git_index_file() as argument. Which is exactly what
builtin/commit.c does in prepare_index(). .git/index.lock gets passed
in instead. read-cache.c may "poke" or "refresh" (probably should
rename these to "read" and "write") because is_main_index()
incorrectly returns true. Luckily it will soon find out index-helper
does not prepare shm for this particular index file and fall back to
reading from disk. We waste some context switches though.
-- 
Duy

  parent reply	other threads:[~2016-05-01  0:22 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-27 20:04 [PATCH v6 00/19] index-helper/watchman David Turner
2016-04-27 20:04 ` [PATCH v6 01/19] read-cache.c: fix constness of verify_hdr() David Turner
2016-04-27 20:04 ` [PATCH v6 02/19] read-cache: allow to keep mmap'd memory after reading David Turner
2016-04-27 20:04 ` [PATCH v6 03/19] index-helper: new daemon for caching index and related stuff David Turner
2016-04-28 18:58   ` Junio C Hamano
2016-04-29 18:46     ` David Turner
2016-04-29 20:47       ` Junio C Hamano
2016-05-01  0:22       ` Duy Nguyen [this message]
2016-04-27 20:04 ` [PATCH v6 04/19] index-helper: add --strict David Turner
2016-04-27 20:04 ` [PATCH v6 05/19] index-helper: log warnings David Turner
2016-04-27 20:04 ` [PATCH v6 06/19] daemonize(): set a flag before exiting the main process David Turner
2016-04-27 20:04 ` [PATCH v6 07/19] index-helper: add --detach David Turner
2016-04-27 20:04 ` [PATCH v6 08/19] read-cache: add watchman 'WAMA' extension David Turner
2016-04-27 20:04 ` [PATCH v6 09/19] Add watchman support to reduce index refresh cost David Turner
2016-04-27 20:04 ` [PATCH v6 10/19] index-helper: use watchman to avoid refreshing index with lstat() David Turner
2016-04-27 20:04 ` [PATCH v6 11/19] update-index: enable/disable watchman support David Turner
2016-04-27 20:04 ` [PATCH v6 12/19] unpack-trees: preserve index extensions David Turner
2016-04-27 20:04 ` [PATCH v6 13/19] watchman: add a config option to enable the extension David Turner
2016-04-27 20:04 ` [PATCH v6 14/19] index-helper: kill mode David Turner
2016-04-27 20:04 ` [PATCH v6 15/19] index-helper: don't run if already running David Turner
2016-04-27 20:04 ` [PATCH v6 16/19] index-helper: autorun mode David Turner
2016-04-27 20:04 ` [PATCH v6 17/19] index-helper: optionally automatically run David Turner
2016-04-27 20:04 ` [PATCH v6 18/19] Add tracing to measure where most of the time is spent David Turner
2016-04-27 20:04 ` [PATCH v6 19/19] untracked-cache: config option David Turner

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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CACsJy8AZihi2j=LLqhPvvLm2PPR4KZne2y9ENR4YDgY+tOXo0A@mail.gmail.com' \
    --to=pclouds@gmail.com \
    --cc=dturner@twopensource.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=ramsay@ramsayjones.plus.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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).