]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: OSDMonitor: Missing nearfull flag set 11273/head
authorIgor Podoski <igor.podoski@ts.fujitsu.com>
Wed, 14 Sep 2016 11:36:43 +0000 (07:36 -0400)
committerIgor Podoski <igor.podoski@ts.fujitsu.com>
Thu, 17 Nov 2016 07:48:48 +0000 (02:48 -0500)
Output from 'ceph -s -f json-pretty' wans't showing nearfull flag set.

Signed-off-by: Igor Podoski <igor.podoski@ts.fujitsu.com>
(cherry picked from commit 754887b575795ef96cda095f7f0d8c898e20f00f)

src/mon/OSDMonitor.cc

index a006dbde648ffa319ed8b831cb50e735b3968f6b..55af8b757c4202a3772a1dd190e88b96bb636484 100644 (file)
@@ -2513,9 +2513,20 @@ void OSDMonitor::tick()
       dout(10) << "No full osds, removing full flag" << dendl;
       remove_flag(CEPH_OSDMAP_FULL);
     }
+
+    if (!mon->pgmon()->pg_map.nearfull_osds.empty()) {
+      dout(5) << "There are near full osds, setting nearfull flag" << dendl;
+      add_flag(CEPH_OSDMAP_NEARFULL);
+    } else if (osdmap.test_flag(CEPH_OSDMAP_NEARFULL)){
+      dout(10) << "No near full osds, removing nearfull flag" << dendl;
+      remove_flag(CEPH_OSDMAP_NEARFULL);
+    }
     if (pending_inc.new_flags != -1 &&
-       (pending_inc.new_flags ^ osdmap.flags) & CEPH_OSDMAP_FULL) {
-      dout(1) << "New setting for CEPH_OSDMAP_FULL -- doing propose" << dendl;
+       (pending_inc.new_flags ^ osdmap.flags) & (CEPH_OSDMAP_FULL | CEPH_OSDMAP_NEARFULL)) {
+      dout(1) << "New setting for" <<
+              (pending_inc.new_flags & CEPH_OSDMAP_FULL ? " CEPH_OSDMAP_FULL" : "") <<
+              (pending_inc.new_flags & CEPH_OSDMAP_NEARFULL ? " CEPH_OSDMAP_NEARFULL" : "")
+              << " -- doing propose" << dendl;
       do_propose = true;
     }
   }