From: Sage Weil Date: Fri, 5 Dec 2014 01:07:32 +0000 (-0800) Subject: osd: move pg removal flag into a static helper X-Git-Tag: v0.91~23^2~12 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=cd462d173cd5830d2f64e8841d6e646b035e89d8;p=ceph.git osd: move pg removal flag into a static helper Signed-off-by: Sage Weil --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 478d1fd9eb8b..d1658908c6ff 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -2722,11 +2722,11 @@ void OSD::load_pgs() spg_t pgid; snapid_t snap; uint64_t seq; - char val; if (it->is_temp(pgid) || it->is_removal(&seq, &pgid) || - store->collection_getattr(*it, "remove", &val, 1) > 0) { + (it->is_pg(pgid, snap) && + PG::_has_removal_flag(store, pgid))) { dout(10) << "load_pgs " << *it << " clearing temp" << dendl; recursive_remove_collection(store, *it); continue; diff --git a/src/osd/PG.cc b/src/osd/PG.cc index a89bdde499b4..b857aaf836f0 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -2704,6 +2704,17 @@ void PG::write_info(ObjectStore::Transaction& t) dirty_big_info = false; } +bool PG::_has_removal_flag(ObjectStore *store, + spg_t pgid) +{ + coll_t coll(pgid); + char val; + if (store->collection_getattr(coll, "remove", &val, 1) > 0) + return true; + return false; +} + + epoch_t PG::peek_map_epoch(ObjectStore *store, spg_t pgid, hobject_t legacy_infos_oid, diff --git a/src/osd/PG.h b/src/osd/PG.h index b4968d96fdbd..0311947abf84 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -2135,6 +2135,7 @@ public: hobject_t &infos_oid, interval_set &snap_collections, __u8 &); void read_state(ObjectStore *store, bufferlist &bl); + static bool _has_removal_flag(ObjectStore *store, spg_t pgid); static epoch_t peek_map_epoch(ObjectStore *store, spg_t pgid, hobject_t legacy_infos_oid, bufferlist *bl); diff --git a/src/tools/ceph_objectstore_tool.cc b/src/tools/ceph_objectstore_tool.cc index ddd98524e1b8..523d3594707f 100644 --- a/src/tools/ceph_objectstore_tool.cc +++ b/src/tools/ceph_objectstore_tool.cc @@ -29,6 +29,7 @@ #include "osd/PGLog.h" #include "osd/OSD.h" +#include "osd/PG.h" #include "json_spirit/json_spirit_value.h" #include "json_spirit/json_spirit_reader.h" @@ -693,9 +694,8 @@ int finish_remove_pgs(ObjectStore *store) uint64_t seq; coll_t coll(pgid); - char val; if (it->is_removal(&seq, &pgid) || - store->collection_getattr(coll, "remove", &val, 1) == 1) { + PG::_has_removal_flag(store, pgid)) { cout << "finish_remove_pgs removing " << *it << " pgid is " << pgid << std::endl; remove_coll(store, *it);