[PATCH 0/2] object-file: fix packfile flush during transaction commit
From: Justin Tobler <hidden>
Date: 2026-09-13 20:26:35
Greetings, This short series fixes a bug I found related to committing an ODB transaction that contains both a loose object and "large" blob when also configured to batch fsync loose objects. The issue can be reproduced with the following: git init git config core.fsync loose-object git config core.fsyncMethod batch git config core.bigFileThreshold 5 echo foo >1-foo && echo foobar >2-foobar git add 1-foo 2-foobar and produces the following error: error: unable to write file .git/objects/pack/pack-2b7c2470289822070687e8d64186093a710eaed3.pack: No such file or directory fatal: unable to rename temporary file to '.git/objects/pack/pack-2b7c2470289822070687e8d64186093a710eaed3.pack' If a "large" blob packfile is written to the transaction temporary directory, it is unable to be flushed during transaction commit because the underlying transaction is migrated to the main ODB before the packfile is finalized. To avoid this, this series ensures any pending packfile in the transaction is flushed first. Thanks, -Justin Justin Tobler (2): object-file: lift ODB reprepare out of packfile flush object-file: flush transaction packfile before migrating objects object-file.c | 12 ++++++++---- t/t1050-large.sh | 16 ++++++++++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) base-commit: 47ce80527c56f462cb97db4ca8125342204d3783 -- 2.55.0