]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/: add PG_STATE_SNAPTRIM[_WAIT] to expose snap trim state to user
authorSamuel Just <sjust@redhat.com>
Thu, 26 Jan 2017 23:05:14 +0000 (15:05 -0800)
committerSamuel Just <sjust@redhat.com>
Mon, 13 Feb 2017 17:47:02 +0000 (09:47 -0800)
Signed-off-by: Samuel Just <sjust@redhat.com>
src/osd/PrimaryLogPG.cc
src/osd/PrimaryLogPG.h
src/osd/osd_types.cc
src/osd/osd_types.h

index c76d2a0669c41e526a3a47d25598a81f96877a91..70e3b48c9683dbe616ef632302bd17de08f73b81 100644 (file)
@@ -13136,9 +13136,11 @@ PrimaryLogPG::AwaitAsyncWork::AwaitAsyncWork(my_context ctx)
   : my_base(ctx),
     NamedState(context< SnapTrimmer >().pg->cct, "Trimming/AwaitAsyncWork")
 {
+  auto *pg = context< SnapTrimmer >().pg;
   context< SnapTrimmer >().log_enter(state_name);
-  context< SnapTrimmer >().pg->osd->queue_for_snap_trim(
-    context< SnapTrimmer >().pg);
+  context< SnapTrimmer >().pg->osd->queue_for_snap_trim(pg);
+  pg->state_set(PG_STATE_SNAPTRIM);
+  pg->publish_stats_to_osd();
 }
 
 boost::statechart::result PrimaryLogPG::AwaitAsyncWork::react(const DoSnapWork&)
index 75f40c9f3921869c817b98a2042aae752c0b7780..38325c8c4033435a5400839214234e895a33176d 100644 (file)
@@ -1484,6 +1484,8 @@ private:
       context< SnapTrimmer >().log_exit(state_name, enter_time);
       auto *pg = context< SnapTrimmer >().pg;
       pg->osd->snap_reserver.cancel_reservation(pg->get_pgid());
+      pg->state_clear(PG_STATE_SNAPTRIM);
+      pg->publish_stats_to_osd();
     }
     boost::statechart::result react(const KickTrim&) {
       return discard_event();
@@ -1583,6 +1585,8 @@ private:
        pg->get_pgid(),
        pending,
        0);
+      pg->state_set(PG_STATE_SNAPTRIM_WAIT);
+      pg->publish_stats_to_osd();
     }
     boost::statechart::result react(const SnapTrimReserved&);
     void exit() {
@@ -1590,6 +1594,9 @@ private:
       if (pending)
        pending->cancel();
       pending = nullptr;
+      auto *pg = context< SnapTrimmer >().pg;
+      pg->state_clear(PG_STATE_SNAPTRIM_WAIT);
+      pg->publish_stats_to_osd();
     }
     boost::statechart::result react(const KickTrim&) {
       return discard_event();
index ff3c97268b6c824a93eb61b7c991525cca7e147c..25a3f268c0d4341ca170e5f30cd8a8c02549d5e9 100644 (file)
@@ -822,6 +822,10 @@ std::string pg_state_string(int state)
     oss << "incomplete+";
   if (state & PG_STATE_PEERED)
     oss << "peered+";
+  if (state & PG_STATE_SNAPTRIM)
+    oss << "snaptrim+";
+  if (state & PG_STATE_SNAPTRIM_WAIT)
+    oss << "snaptrim_wait+";
   string ret(oss.str());
   if (ret.length() > 0)
     ret.resize(ret.length() - 1);
@@ -875,6 +879,10 @@ int pg_string_state(const std::string& state)
     type = PG_STATE_ACTIVATING;
   else if (state == "peered")
     type = PG_STATE_PEERED;
+  else if (state == "snaptrim")
+    type = PG_STATE_SNAPTRIM;
+  else if (state == "snaptrim_wait")
+    type = PG_STATE_SNAPTRIM_WAIT;
   else
     type = -1;
   return type;
index 318a902856aa0b199edb16a280d833231ad62d73..08d4ed427d68d56532985c49981d4c96e46cb04d 100644 (file)
@@ -943,6 +943,8 @@ inline ostream& operator<<(ostream& out, const osd_stat_t& s) {
 #define PG_STATE_UNDERSIZED    (1<<23) // pg acting < pool size
 #define PG_STATE_ACTIVATING   (1<<24) // pg is peered but not yet active
 #define PG_STATE_PEERED        (1<<25) // peered, cannot go active, can recover
+#define PG_STATE_SNAPTRIM      (1<<26) // trimming snaps
+#define PG_STATE_SNAPTRIM_WAIT (1<<27) // queued to trim snaps
 
 std::string pg_state_string(int state);
 std::string pg_vector_string(const vector<int32_t> &a);