From 6e3e53789927393f01d38eb61ce0db9672eb7174 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 3 Sep 2021 16:41:03 -0500 Subject: [PATCH] os/bluestore: force prefer_deferred_size=0 for smr Signed-off-by: Sage Weil --- src/os/bluestore/BlueStore.cc | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 06adf8f55a9..bd22830f727 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -5266,10 +5266,15 @@ void BlueStore::_set_alloc_sizes(void) { max_alloc_size = cct->_conf->bluestore_max_alloc_size; +#ifdef HAVE_LIBZBD + ceph_assert(bdev); + if (bdev->is_smr()) { + prefer_deferred_size = 0; + } else +#endif if (cct->_conf->bluestore_prefer_deferred_size) { prefer_deferred_size = cct->_conf->bluestore_prefer_deferred_size; } else { - ceph_assert(bdev); if (_use_rotational_settings()) { prefer_deferred_size = cct->_conf->bluestore_prefer_deferred_size_hdd; } else { @@ -5280,7 +5285,6 @@ void BlueStore::_set_alloc_sizes(void) if (cct->_conf->bluestore_deferred_batch_ops) { deferred_batch_ops = cct->_conf->bluestore_deferred_batch_ops; } else { - ceph_assert(bdev); if (_use_rotational_settings()) { deferred_batch_ops = cct->_conf->bluestore_deferred_batch_ops_hdd; } else { @@ -5531,15 +5535,6 @@ int BlueStore::_create_alloc() #ifdef HAVE_LIBZBD if (freelist_type == "zoned") { allocator_type = "zoned"; - - // We don't want to defer writes with HM-SMR because it violates sequential - // write requirement. - if (prefer_deferred_size) { - dout(1) << __func__ << " The drive is HM-SMR but prefer_deferred_size is " - << prefer_deferred_size << ". " - << "Please set to 0." << dendl; - return -EINVAL; - } } #endif -- 2.39.5