]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd: enabling/disabling rbd feature should report missing dependency 12238/head
authorGaurav Kumar Garg <garg.gaurav52@gmail.com>
Wed, 30 Nov 2016 09:47:34 +0000 (10:47 +0100)
committerGaurav Kumar Garg <garg.gaurav52@gmail.com>
Thu, 1 Dec 2016 15:17:05 +0000 (16:17 +0100)
Currently while enabling or disabling rbd feature command does not
give missing dependency for eg: attempting to enable the journaling
feature on an image that doesn't have the exclusive-lock feature
enabled should give missing dependency error message.

Fixes: http://tracker.ceph.com/issues/16985
Reported-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Gaurav Kumar Garg <garg.gaurav52@gmail.com>
src/librbd/operation/DisableFeaturesRequest.cc
src/librbd/operation/EnableFeaturesRequest.cc

index 537903b35eb9bedf7e13b94ea688b7eeb96ad673..bd9edf6edcc9b5117bd5d17528be2361292a09a3 100644 (file)
@@ -178,7 +178,9 @@ Context *DisableFeaturesRequest<I>::handle_acquire_exclusive_lock(int *result) {
     if ((m_features & RBD_FEATURE_EXCLUSIVE_LOCK) != 0) {
       if ((m_new_features & RBD_FEATURE_OBJECT_MAP) != 0 ||
           (m_new_features & RBD_FEATURE_JOURNALING) != 0) {
-        lderr(cct) << "cannot disable exclusive lock" << dendl;
+        lderr(cct) << "cannot disable exclusive-lock. object-map "
+                      "or journaling must be disabled before "
+                      "disabling exclusive-lock." << dendl;
         *result = -EINVAL;
         break;
       }
@@ -190,7 +192,8 @@ Context *DisableFeaturesRequest<I>::handle_acquire_exclusive_lock(int *result) {
     }
     if ((m_features & RBD_FEATURE_OBJECT_MAP) != 0) {
       if ((m_new_features & RBD_FEATURE_FAST_DIFF) != 0) {
-        lderr(cct) << "cannot disable object map" << dendl;
+        lderr(cct) << "cannot disable object-map. fast-diff must be "
+                      "disabled before disabling object-map." << dendl;
         *result = -EINVAL;
         break;
       }
index 71fc4f1bb92a160b66a52b0333d1aea4397be359..b1521f8cba7380ab04566f501858358fbddef247 100644 (file)
@@ -180,7 +180,8 @@ Context *EnableFeaturesRequest<I>::handle_get_mirror_mode(int *result) {
 
     if ((m_features & RBD_FEATURE_OBJECT_MAP) != 0) {
       if ((m_new_features & RBD_FEATURE_EXCLUSIVE_LOCK) == 0) {
-       lderr(cct) << "cannot enable object map" << dendl;
+       lderr(cct) << "cannot enable object-map. exclusive-lock must be "
+                      "enabled before enabling object-map." << dendl;
        *result = -EINVAL;
        break;
       }
@@ -189,7 +190,8 @@ Context *EnableFeaturesRequest<I>::handle_get_mirror_mode(int *result) {
     }
     if ((m_features & RBD_FEATURE_FAST_DIFF) != 0) {
       if ((m_new_features & RBD_FEATURE_OBJECT_MAP) == 0) {
-       lderr(cct) << "cannot enable fast diff" << dendl;
+       lderr(cct) << "cannot enable fast-diff. object-map must be "
+                      "enabled before enabling fast-diff." << dendl;
        *result = -EINVAL;
        break;
       }
@@ -198,7 +200,8 @@ Context *EnableFeaturesRequest<I>::handle_get_mirror_mode(int *result) {
     }
     if ((m_features & RBD_FEATURE_JOURNALING) != 0) {
       if ((m_new_features & RBD_FEATURE_EXCLUSIVE_LOCK) == 0) {
-       lderr(cct) << "cannot enable journaling" << dendl;
+       lderr(cct) << "cannot enable journaling. exclusive-lock must be "
+                      "enabled before enabling journaling." << dendl;
        *result = -EINVAL;
        break;
       }