From f9799e3153b61e2b17f98bf64815a9dc2e792f25 Mon Sep 17 00:00:00 2001 From: xie xingguo Date: Wed, 11 Jan 2017 16:18:47 +0800 Subject: [PATCH] os/bluestore: conditionally load crr option And moving COMP_NONE checking ahead, since this is the preferred option. Signed-off-by: xie xingguo --- src/os/bluestore/BlueStore.cc | 58 ++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 6816e5d718db8..6f793c30f9497 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -7856,34 +7856,36 @@ int BlueStore::_do_alloc_write( uint64_t hint = 0; CompressorRef c; + double crr = 0; if (wctx->compress) { c = select_option( - "compression_algorithm", - compressor, - [&]() { - string val; - if (coll->pool_opts.get(pool_opts_t::COMPRESSION_ALGORITHM, &val)) { - CompressorRef cp = compressor; - if (!cp || cp->get_type_name() != val) { - cp = Compressor::create(cct, val); + "compression_algorithm", + compressor, + [&]() { + string val; + if (coll->pool_opts.get(pool_opts_t::COMPRESSION_ALGORITHM, &val)) { + CompressorRef cp = compressor; + if (!cp || cp->get_type_name() != val) { + cp = Compressor::create(cct, val); + } + return boost::optional(cp); } - return boost::optional(cp); + return boost::optional(); } - return boost::optional(); - }); - } + ); - auto crr = select_option( - "compression_required_ratio", - cct->_conf->bluestore_compression_required_ratio, - [&]() { - double val; - if(coll->pool_opts.get(pool_opts_t::COMPRESSION_REQUIRED_RATIO, &val)) { - return boost::optional(val); + crr = select_option( + "compression_required_ratio", + cct->_conf->bluestore_compression_required_ratio, + [&]() { + double val; + if(coll->pool_opts.get(pool_opts_t::COMPRESSION_REQUIRED_RATIO, &val)) { + return boost::optional(val); + } + return boost::optional(); } - return boost::optional(); - } - ); + ); + } // checksum int csum = csum_type.load(); @@ -8196,12 +8198,12 @@ int BlueStore::_do_write( return boost::optional(); } ); - wctx.compress = - (cm == Compressor::COMP_FORCE) || - (cm == Compressor::COMP_AGGRESSIVE && - (alloc_hints & CEPH_OSD_ALLOC_HINT_FLAG_INCOMPRESSIBLE) == 0) || - (cm == Compressor::COMP_PASSIVE && - (alloc_hints & CEPH_OSD_ALLOC_HINT_FLAG_COMPRESSIBLE)); + wctx.compress = (cm != Compressor::COMP_NONE) && + ((cm == Compressor::COMP_FORCE) || + (cm == Compressor::COMP_AGGRESSIVE && + (alloc_hints & CEPH_OSD_ALLOC_HINT_FLAG_INCOMPRESSIBLE) == 0) || + (cm == Compressor::COMP_PASSIVE && + (alloc_hints & CEPH_OSD_ALLOC_HINT_FLAG_COMPRESSIBLE))); if ((alloc_hints & CEPH_OSD_ALLOC_HINT_FLAG_SEQUENTIAL_READ) && (alloc_hints & CEPH_OSD_ALLOC_HINT_FLAG_RANDOM_READ) == 0 && -- 2.39.5