]> 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:09:31 +0000 (13:09 -0700)
Signed-off-by: Sage Weil <sage@inktank.com>
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 c32f36df72808ee8aad7240ba45b4094e79231af..52123771217157d706edd0b535578baa9311486c 100644 (file)
@@ -6509,6 +6509,13 @@ int OSD::init_op_flags(OpRequestRef 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;