This should cover even the extreme cases of memory pressure for the cost
of 2mb of memory, and this should make the journal WAL bypass exceedingly rare.
---
ext2fs/journal.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/ext2fs/journal.c b/ext2fs/journal.c
index 2625ea327..b05855b00 100644
--- a/ext2fs/journal.c
+++ b/ext2fs/journal.c
@@ -118,9 +118,9 @@
#define JOURNAL_WAIT(cond, j) \
pthread_cond_wait((cond), &(j)->j_state_lock)
-#define JRNL_LIFEBOAT_CAPACITY 128
+#define JRNL_LIFEBOAT_CAPACITY 512
-#define JRNL_LIFEBOAT_ALLOC_MASK_LEN 2
+#define JRNL_LIFEBOAT_ALLOC_MASK_LEN 8
/* Thread-Local Deferred Block Queue (The Checkpoint Circuit Breaker)
*
@@ -150,11 +150,11 @@ __thread int deferred_count = 0;
struct journal_lifeboat
{
- /* 128 bits total: 0 means free, 1 means occupied.
+ /* 512 bits total: 0 means free, 1 means occupied.
Protected by the main ext2_journal->j_state_lock. */
uint64_t alloc_mask[JRNL_LIFEBOAT_ALLOC_MASK_LEN];
- /* The pre-allocated payload pool (128 * 4KB = 512KB) */
+ /* The pre-allocated payload pool (512 * 4KB = 2MB) */
char payloads[JRNL_LIFEBOAT_CAPACITY][4096];
};
--
2.54.0