]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: add and use OSD_PGLOG_HARDLIMIT feature bit
authorNeha Ojha <nojha@redhat.com>
Thu, 20 Dec 2018 17:27:34 +0000 (09:27 -0800)
committerNeha Ojha <nojha@redhat.com>
Fri, 18 Jan 2019 19:06:13 +0000 (14:06 -0500)
Signed-off-by: Neha Ojha <nojha@redhat.com>
(cherry picked from commit 6b0a3ded5baabb19809618de16cdf67c925a8e5a)

Conflicts:
src/mon/OSDMonitor.cc: trivial resolution

src/include/ceph_features.h
src/mon/OSDMonitor.cc

index bea6f49fb160760e13d12644f6652573809ce353..ac51eb246d5be64f5e6145f54cf416593b50f823 100755 (executable)
@@ -93,6 +93,7 @@ DEFINE_CEPH_FEATURE_RETIRED(17, 1, INDEP_PG_MAP, JEWEL, LUMINOUS)
 
 DEFINE_CEPH_FEATURE(18, 1, CRUSH_TUNABLES)
 DEFINE_CEPH_FEATURE_RETIRED(19, 1, CHUNKY_SCRUB, JEWEL, LUMINOUS)
+DEFINE_CEPH_FEATURE(19, 2, OSD_PGLOG_HARDLIMIT)
 
 DEFINE_CEPH_FEATURE_RETIRED(20, 1, MON_NULLROUTE, JEWEL, LUMINOUS)
 
@@ -231,6 +232,7 @@ DEFINE_CEPH_FEATURE_DEPRECATED(63, 1, RESERVED_BROKEN, LUMINOUS) // client-facin
         CEPH_FEATURE_RADOS_BACKOFF |           \
         CEPH_FEATURE_OSD_RECOVERY_DELETES | \
         CEPH_FEATURE_CEPHX_V2 | \
+        CEPH_FEATURE_OSD_PGLOG_HARDLIMIT | \
         0ULL)
 
 #define CEPH_FEATURES_SUPPORTED_DEFAULT  CEPH_FEATURES_ALL
index 939f5b26535b89afd01f4377c0fe557152f71a90..5710c3ea61278a39e7997b41e8b6efc22ff1a931 100644 (file)
@@ -2515,8 +2515,10 @@ bool OSDMonitor::preprocess_boot(MonOpRequestRef op)
                        << " because all up OSDs are post-hammer";
       goto ignore;
     }
+  }
 
-  if (osdmap.test_flag(CEPH_OSDMAP_PGLOG_HARDLIMIT) &&
+  if (osdmap.require_osd_release >= CEPH_RELEASE_LUMINOUS &&
+      osdmap.test_flag(CEPH_OSDMAP_PGLOG_HARDLIMIT) &&
       !(m->osd_features & CEPH_FEATURE_OSD_PGLOG_HARDLIMIT)) {
     mon->clog->info() << "disallowing boot of OSD "
                      << m->get_orig_source_inst()
@@ -9375,14 +9377,15 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
        goto reply;
       }
     } else if (key == "pglog_hardlimit") {
-      if (!osdmap.get_num_up_osds() && !sure) {
+      if (!osdmap.get_num_up_osds() && sure != "--yes-i-really-mean-it") {
         ss << "Not advisable to continue since no OSDs are up. Pass "
            << "--yes-i-really-mean-it if you really wish to continue.";
         err = -EPERM;
         goto reply;
       }
-      if (HAVE_FEATURE(osdmap.get_up_osd_features(), OSD_PGLOG_HARDLIMIT)
-          || sure) {
+      if (osdmap.require_osd_release >= CEPH_RELEASE_LUMINOUS &&
+         (HAVE_FEATURE(osdmap.get_up_osd_features(), OSD_PGLOG_HARDLIMIT)
+          || sure == "--yes-i-really-mean-it")) {
        return prepare_set_flag(op, CEPH_OSDMAP_PGLOG_HARDLIMIT);
       } else {
        ss << "not all up OSDs have OSD_PGLOG_HARDLIMIT feature";