From: xie xingguo Date: Wed, 11 Jan 2017 08:18:47 +0000 (+0800) Subject: os/bluestore: conditionally load crr option X-Git-Tag: v12.0.0~185^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F12877%2Fhead;p=ceph.git os/bluestore: conditionally load crr option And moving COMP_NONE checking ahead, since this is the preferred option. Signed-off-by: xie xingguo --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 6816e5d718db..6f793c30f949 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 &&