diff options
| author | Christian Hopps <chopps@labn.net> | 2024-09-14 06:52:43 -0400 |
|---|---|---|
| committer | Christian Hopps <chopps@labn.net> | 2024-09-17 03:04:59 -0400 |
| commit | d57a6f761e56a44b4ac8b6b47fa54592127c1bb9 (patch) | |
| tree | efab9d6bdf6e54bd4b62fd9639e4bbfdfa6bc96a /mgmtd | |
| parent | 0913d9fc0ea4975eb0dd37f5ca84af2264833687 (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.c | 10 |
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, |
