From b6c592f0993cc73d8d287e34aecb68e4a9efb807 Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Wed, 27 Sep 2017 15:47:37 -0700 Subject: [PATCH] scoutfs: don't dirty btree buffers The btree sets some buffer head flags before it writes them to satisfy submit_bh() requirements. It was setting dirty which wasn't required. Nothing every cleared dirty so those buffers sat around and were never freed. Each btree block we wrote sat around forever. Eventually the vm gets clogged up and the world backs up trying to allocate pages to write and we see massive stalls. With this fix we no longer see the 'buffers' vm stat continously grow and IO rates are consistent over time. Signed-off-by: Zach Brown --- kmod/src/btree.c | 1 - 1 file changed, 1 deletion(-) diff --git a/kmod/src/btree.c b/kmod/src/btree.c index 658f7e63..a64e6337 100644 --- a/kmod/src/btree.c +++ b/kmod/src/btree.c @@ -1844,7 +1844,6 @@ int scoutfs_btree_write_dirty(struct super_block *sb) for_each_dirty_bh(bti, bh, tmp) { lock_buffer(bh); - set_buffer_dirty(bh); set_buffer_mapped(bh); bh->b_end_io = end_buffer_write_sync; get_bh(bh);