[PATCH 0/9] packfile: avoid .idx rename races
- From
Taylor Blau <me@ttaylorr.com>
- Date
- Sep 9, 2021, 03:24 UTC
- Message-ID
- <cover.1631157880.git.me@ttaylorr.com>
- In-Reply-To
- <cover.1630461918.git.me@ttaylorr.com>
This series is a unification of [1] and [2] which together prevent a handful of races when code that writes packfiles moves the `.idx` into place before all other auxiliary files are properly renamed.
This can lead to races like not reading the `.rev` file even if one was generated and is about to be moved into place.
Credit goes to Ævar for preparing what is more-or-less sent here. I polished a few of the commit messages, and added the second patch on top of his result. It isn't necessary, but felt like good hygiene when I was reading the surrounding code.
Thanks in advance for reviewing.
[1]: https://lore.kernel.org/git/cover.1631139433.git.me@ttaylorr.com/ [2]: https://lore.kernel.org/git/cover-0.3-00000000000-20210907T193600Z-avarab@gmail.com/
Taylor Blau (4): bulk-checkin.c: store checksum directly pack-write.c: rename `.idx` files after `*.rev` builtin/repack.c: move `.idx` files into place last builtin/index-pack.c: move `.idx` files into place last
Ævar Arnfjörð Bjarmason (5): pack.h: line-wrap the definition of finish_tmp_packfile() pack-write: refactor renaming in finish_tmp_packfile() index-pack: refactor renaming in final() pack-write: split up finish_tmp_packfile() function pack-objects: rename .idx files into place after .bitmap files
builtin/index-pack.c | 48 +++++++++++++++++------------------ builtin/pack-objects.c | 15 ++++++++--- builtin/repack.c | 2 +- bulk-checkin.c | 31 +++++++++++++++++------ pack-write.c | 57 +++++++++++++++++++++--------------------- pack.h | 10 +++++++- 6 files changed, 96 insertions(+), 67 deletions(-)
-- 2.33.0.96.g73915697e6