Don't swallow -EAGAIN in srch.c.

The earlier change advances the reader past the tournament winner
before the entry is emitted. It's possible we get an -EAGAIN
trying to allocate a block while in the out: path, and then it's
silently dropped. If we return an error here, the whole compaction
will be discarded and be redone later.

Signed-off-by: Auke Kok <auke.kok@versity.com>
This commit is contained in:
Auke Kok
2026-03-16 15:10:34 -07:00
parent efc19c3d75
commit bd193d351e

View File

@@ -1780,8 +1780,7 @@ out:
ret = alloc_srch_block(sb, alloc, wri, sfl, &bl, blk);
if (ret) {
emit = false;
if (ret == -EAGAIN)
ret = 0;
/* don't swallow -EAGAIN: tmp_entry would be lost */
} else {
srb = bl->data;
}