From: Samuel Just Date: Mon, 23 Mar 2015 18:16:27 +0000 (-0700) Subject: Revert "ReplicatedPG: only allow a degraded write if we have at least min_size copies" X-Git-Tag: v0.94~19^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3edfa672fd7744f9572f49ad4dc7eaae269061a6;p=ceph.git Revert "ReplicatedPG: only allow a degraded write if we have at least min_size copies" This reverts commit 48466f8d7ce2b6762077f3fc686ada5648021517. --- diff --git a/src/common/config_opts.h b/src/common/config_opts.h index fcaf0568efc5..8e817e140347 100644 --- a/src/common/config_opts.h +++ b/src/common/config_opts.h @@ -657,7 +657,6 @@ OPTION(osd_failsafe_full_ratio, OPT_FLOAT, .97) // what % full makes an OSD "ful OPTION(osd_failsafe_nearfull_ratio, OPT_FLOAT, .90) // what % full makes an OSD near full (failsafe) OPTION(osd_pg_object_context_cache_count, OPT_INT, 64) -OPTION(osd_enable_degraded_writes, OPT_BOOL, true) // determines whether PGLog::check() compares written out log to stored log OPTION(osd_debug_pg_log_writeout, OPT_BOOL, false) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 614fdf0b6fe2..094187a13baf 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -440,36 +440,6 @@ void ReplicatedPG::wait_for_all_missing(OpRequestRef op) op->mark_delayed("waiting for all missing"); } -bool ReplicatedPG::is_degraded_object(const hobject_t &soid, int *healthy_copies) -{ - bool degraded = false; - assert(healthy_copies); - *healthy_copies = 0; - - if (pg_log.get_missing().missing.count(soid)) { - degraded = true; - } else { - *healthy_copies += 1; - } - - for (set::iterator i = actingbackfill.begin(); - i != actingbackfill.end(); - ++i) { - if (*i == get_primary()) continue; - pg_shard_t peer = *i; - if (peer_missing.count(peer) && - peer_missing[peer].missing.count(soid)) { - degraded = true; - continue; - } - - assert(peer_info.count(peer)); - if (!peer_info[peer].is_incomplete()) - *healthy_copies += 1; - } - return degraded; -} - bool ReplicatedPG::is_degraded_or_backfilling_object(const hobject_t& soid) { if (pg_log.get_missing().missing.count(soid)) @@ -1483,13 +1453,10 @@ void ReplicatedPG::do_op(OpRequestRef& op) * * We also block if our peers do not support DEGRADED_WRITES. */ - int valid_copies = 0; - if (write_ordered && - is_degraded_object(head, &valid_copies) && - (valid_copies < pool.info.min_size || - pool.info.ec_pool() || - !cct->_conf->osd_enable_degraded_writes || - !(get_min_peer_features() & CEPH_FEATURE_OSD_DEGRADED_WRITES))) { + if ((pool.info.ec_pool() || + !(get_min_peer_features() & CEPH_FEATURE_OSD_DEGRADED_WRITES)) && + write_ordered && + is_degraded_or_backfilling_object(head)) { wait_for_degraded_object(head, op); return; } diff --git a/src/osd/ReplicatedPG.h b/src/osd/ReplicatedPG.h index 61477b5acbdd..c05aaaac8768 100644 --- a/src/osd/ReplicatedPG.h +++ b/src/osd/ReplicatedPG.h @@ -1514,11 +1514,6 @@ public: void wait_for_all_missing(OpRequestRef op); bool is_degraded_or_backfilling_object(const hobject_t& oid); - - /* true if the object is missing on any peer, *healthy_copies will be - * set to the number of complete peers not missing the object - */ - bool is_degraded_object(const hobject_t &oid, int *healthy_copies); void wait_for_degraded_object(const hobject_t& oid, OpRequestRef op); bool maybe_await_blocked_snapset(const hobject_t &soid, OpRequestRef op);