Re: [PATCH 1/3] Add read_cache_from() and discard_cache()
- From
Junio C Hamano <junkio@cox.net>
- Date
- Jun 30, 2006, 16:44 UTC
- Message-ID
- <7v3bdmk2zj.fsf@assigned-by-dhcp.cox.net>
- In-Reply-To
- <Pine.LNX.4.63.0606301643150.29667@wbgn013.biozentrum.uni-wuerzburg.de>
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
Show 14 quoted lines
> +int discard_cache()
> +{
> + int ret;
> +
> + if (cache_mmap == NULL)
> + return 0;
> + ret = munmap(cache_mmap, cache_mmap_size);
> + cache_mmap = NULL;
> + cache_mmap_size = 0;
> + active_nr = active_cache_changed = 0;
> + /* no need to throw away allocated active_cache */
> + return ret;
> +}
> +I haven't been following the details of the patches in this thread while they are being cooked actively, but two things to look out for are:
- I am guessing you run discard_cache() because you want to read in a new cache (or start from a clean slate). I am not sure what you are doing with the old cache tree data structure. If you are starting from a clean slate (i.e. there is no read_cache_from() after you call discard_cache), you would probably need to discard the old cache tree; otherwise your next write-tree may produce an incorrect index file. If you keep the old one and later swap it in, the problem might be even more severe.
- index_timestamp is left as the old value in this patch when you switch cache using read_cache_from() directly. I have a suspicion you may be bitten by "Racy Git" problem, especially because the operations are supposed to happen quickly thanks to the effort of you two ;-) increasing the risks that the file timestamp of the working tree file and the cached entry match.