From: Jeff King Date: Mon, 02 Oct 2017 05:41:27 GMT Subject: Re: [PATCH 05/11] cache-tree: simplify locking logic Message-ID: <20171002054126.xkvv2zglefxcvbia@sigill.intra.peff.net> In-Reply-To: <3475f0eee33ca0c4b2bc928191f0b06576ee29fb.1506862824.git.martin.agren@gmail.com> On Sun, Oct 01, 2017 at 04:56:06PM +0200, Martin Ă…gren wrote: > After we have taken the lock using `LOCK_DIE_ON_ERROR`, we know that > `newfd` is non-negative. So when we check for exactly that property > before calling `write_locked_index()`, the outcome is guaranteed. > > If we write and commit successfully, we set `newfd = -1`, so that we can > later avoid calling `rollback_lock_file` on an already-committed lock. > But we might just as well unconditionally call `rollback_lock_file()` -- > it will be a no-op if we have already committed. > > All in all, we use `newfd` as a bool and the only benefit we get from it > is that we can avoid calling a no-op. Remove `newfd` so that we have one > variable less to reason about. Nice, this looks much simpler and the reasoning above is all sound. I think cmd_checkout_index() has the exact same thing going on. -Peff