The original compaction condition only postponed compaction when not under
pressure, and only for BIG_WRITE and DELETE types:
if (!under_pressure && (BIG_WRITE || DELETE))
This had two bugs:
1. BIG_INTENT overwrites were not included, causing add_compact() to be
called on BIG_INTENT entries. add_compact() unconditionally rejects
any stable overwrite with EBUSY, leading to unnecessary retry loops.
2. When under pressure, stable overwrites (BIG_WRITE, BIG_INTENT, DELETE
with BS_HEAP_STABLE set) were not skipped. add_compact() rejects stable
overwrites with EBUSY regardless of pressure, so attempting to compact
them under pressure also always fails.
Fix: change the condition to:
if ((!under_pressure || stable) && (BIG_WRITE || BIG_INTENT || DELETE))
When under pressure with an unstable overwrite, we now fall through to
`continue`, skipping it and scanning older entries (SMALL_WRITE /
INTENT_WRITE) that can actually be compacted to reclaim space.