]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: move pg removal flag into a static helper
authorSage Weil <sage@redhat.com>
Fri, 5 Dec 2014 01:07:32 +0000 (17:07 -0800)
committerSage Weil <sage@redhat.com>
Wed, 17 Dec 2014 01:07:58 +0000 (17:07 -0800)
Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/OSD.cc
src/osd/PG.cc
src/osd/PG.h
src/tools/ceph_objectstore_tool.cc

index 478d1fd9eb8beea18cf588e2d14a3155638ae6c2..d1658908c6ffd74cd8f247d03fea4794e4ca1129 100644 (file)
@@ -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;
index a89bdde499b458b94a621ffdd7a0211922d3c573..b857aaf836f03d679bc0fbaa227502a599e760d1 100644 (file)
@@ -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,
index b4968d96fdbdfffe8ce26e8e3fe3355f53073250..0311947abf842f465f57c3031fede6216b05e7b2 100644 (file)
@@ -2135,6 +2135,7 @@ public:
     hobject_t &infos_oid,
     interval_set<snapid_t>  &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);
index ddd98524e1b898bba2819df2b0834eadee4508c7..523d3594707f4bd2181d787bce17d6935b40287b 100644 (file)
@@ -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);