From 6600814b55ebc0994575891f688a2ff2a6ccbf4f Mon Sep 17 00:00:00 2001 From: Jianpeng Ma Date: Mon, 27 Jul 2020 14:59:08 +0800 Subject: [PATCH] os/bluestore/BlueFS: Don't flush unused device. Signed-off-by: Jianpeng Ma --- src/os/bluestore/BlueFS.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/os/bluestore/BlueFS.cc b/src/os/bluestore/BlueFS.cc index 44d2655bcdc4f..3cb41903bb1a4 100644 --- a/src/os/bluestore/BlueFS.cc +++ b/src/os/bluestore/BlueFS.cc @@ -3093,9 +3093,12 @@ void BlueFS::flush_bdev() { // NOTE: this is safe to call without a lock. dout(20) << __func__ << dendl; - for (auto p : bdev) { - if (p) - p->flush(); + for (unsigned i = 0; i < MAX_BDEV; i++) { + // alloc space from BDEV_SLOW is unexpected. + // So most cases we don't alloc from BDEV_SLOW and so avoiding flush not-used device. + if (bdev[i] && ((i != BDEV_SLOW) || (block_all[i].size() - alloc[i]->get_free()))) { + bdev[i]->flush(); + } } } -- 2.39.5