diff options
author | Sage Weil <sage@inktank.com> | 2013-03-27 13:08:38 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-03-27 13:22:06 -0700 |
commit | 4bdd37495cedb1cf30a5311548492fe3f5db6e92 (patch) | |
tree | 6e8602adbdb734c9b0e9b95a59fef26d2cb71d58 | |
parent | f28800f8b65e90a3b96429f07197236e6c9bf1a2 (diff) | |
download | ceph-4bdd37495cedb1cf30a5311548492fe3f5db6e92.tar.gz |
osd: fix detection of non-existent class method
Signed-off-by: Sage Weil <sage@inktank.com>
(cherry picked from commit 50b831e3641c21cd5b145271688189e199f432d1)
-rw-r--r-- | src/osd/ClassHandler.cc | 2 | ||||
-rw-r--r-- | src/osd/OSD.cc | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/osd/ClassHandler.cc b/src/osd/ClassHandler.cc index 5ff8e73309c..f6a5acfbe81 100644 --- a/src/osd/ClassHandler.cc +++ b/src/osd/ClassHandler.cc @@ -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; } diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 07fef776f80..e173f5e7517 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -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; |