summaryrefslogtreecommitdiff
path: root/mgmtd
diff options
context:
space:
mode:
authorChristian Hopps <chopps@labn.net>2024-09-14 06:52:43 -0400
committerChristian Hopps <chopps@labn.net>2024-09-17 03:04:59 -0400
commitd57a6f761e56a44b4ac8b6b47fa54592127c1bb9 (patch)
treeefab9d6bdf6e54bd4b62fd9639e4bbfdfa6bc96a /mgmtd
parent0913d9fc0ea4975eb0dd37f5ca84af2264833687 (diff)
mgmtd: allow dest DS "running" if implicit lock+commit
Signed-off-by: Christian Hopps <chopps@labn.net>
Diffstat (limited to 'mgmtd')
-rw-r--r--mgmtd/mgmt_fe_adapter.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/mgmtd/mgmt_fe_adapter.c b/mgmtd/mgmt_fe_adapter.c
index fc35e74610..8ab66de687 100644
--- a/mgmtd/mgmt_fe_adapter.c
+++ b/mgmtd/mgmt_fe_adapter.c
@@ -1406,7 +1406,12 @@ static void fe_adapter_handle_edit(struct mgmt_fe_session_ctx *session,
bool lock, commit;
int ret;
- if (msg->datastore != MGMT_MSG_DATASTORE_CANDIDATE) {
+ lock = CHECK_FLAG(msg->flags, EDIT_FLAG_IMPLICIT_LOCK);
+ commit = CHECK_FLAG(msg->flags, EDIT_FLAG_IMPLICIT_COMMIT);
+
+ if (lock && commit && msg->datastore == MGMT_MSG_DATASTORE_RUNNING)
+ ;
+ else if (msg->datastore != MGMT_MSG_DATASTORE_CANDIDATE) {
fe_adapter_send_error(session, msg->req_id, false, -EINVAL,
"Unsupported datastore");
return;
@@ -1427,9 +1432,6 @@ static void fe_adapter_handle_edit(struct mgmt_fe_session_ctx *session,
rds_ctx = mgmt_ds_get_ctx_by_id(mm, rds_id);
assert(rds_ctx);
- lock = CHECK_FLAG(msg->flags, EDIT_FLAG_IMPLICIT_LOCK);
- commit = CHECK_FLAG(msg->flags, EDIT_FLAG_IMPLICIT_COMMIT);
-
if (lock) {
if (mgmt_fe_session_write_lock_ds(ds_id, ds_ctx, session)) {
fe_adapter_send_error(session, msg->req_id, false,