#include "librbd/api/Image.h"
#include "librbd/api/Io.h"
#include "librbd/cache/Utils.h"
-#include "librbd/exclusive_lock/AutomaticPolicy.h"
#include "librbd/exclusive_lock/StandardPolicy.h"
#include "librbd/deep_copy/MetadataCopyRequest.h"
#include "librbd/image/CloneRequest.h"
ldout(cct, 20) << __func__ << ": ictx=" << ictx << ", "
<< "lock_mode=" << lock_mode << dendl;
- if (lock_mode != RBD_LOCK_MODE_EXCLUSIVE) {
- return -EOPNOTSUPP;
- }
-
C_SaferCond lock_ctx;
{
std::unique_lock l{ictx->owner_lock};
return -EINVAL;
}
- if (ictx->get_exclusive_lock_policy()->may_auto_request_lock()) {
+ if (lock_mode == RBD_LOCK_MODE_EXCLUSIVE) {
ictx->set_exclusive_lock_policy(
new exclusive_lock::StandardPolicy(ictx));
+ } else {
+ return -EOPNOTSUPP;
}
if (ictx->exclusive_lock->is_lock_owner()) {