]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: fix detection of non-existent class method
authorSage Weil <sage@inktank.com>
Wed, 27 Mar 2013 20:08:38 +0000 (13:08 -0700)
committerSage Weil <sage@inktank.com>
Wed, 27 Mar 2013 20:22:06 +0000 (13:22 -0700)
Signed-off-by: Sage Weil <sage@inktank.com>
(cherry picked from commit 50b831e3641c21cd5b145271688189e199f432d1)

src/osd/ClassHandler.cc
src/osd/OSD.cc

index 5ff8e73309c1b4ad05cdd94cfb9ae090a4ac1c58..f6a5acfbe810dfa71ddf18f2960cbe8423a536b1 100644 (file)
@@ -178,7 +178,7 @@ int ClassHandler::ClassData::get_method_flags(const char *mname)
   Mutex::Locker l(handler->mutex);
   ClassMethod *method = _get_method(mname);
   if (!method)
-    return 0;
+    return -ENOENT;
   return method->flags;
 }
 
index 07fef776f80453eeb3fc83982742bca76c3d2aab..e173f5e75176b1ac465a08c849a10c1a60c5cf11 100644 (file)
@@ -6317,6 +6317,13 @@ int OSD::init_op_flags(MOSDOp *op)
          return r;
        }
        int flags = cls->get_method_flags(mname.c_str());
+       if (flags < 0) {
+         if (flags == -ENOENT)
+           r = -EOPNOTSUPP;
+         else
+           r = flags;
+         return r;
+       }
        is_read = flags & CLS_METHOD_RD;
        is_write = flags & CLS_METHOD_WR;