From nobody Tue Feb 15 17:17:28 2022 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B85C419C87AA; Tue, 15 Feb 2022 17:17:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4JynpJ4nHDz4T4n; Tue, 15 Feb 2022 17:17:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1644945448; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pIDDqdYrjm5hgXpPWOI/RHiBYReZxZH9YXiZspZYW4g=; b=yAqH0kEgdy461Jyafgsgm+uunReKsWAP/kb2/fxq3W5DM7yq1DY/zvxQLQYjiuTDAqtIJD I7elowi/yK241YxdIpl/+8ycpXIMsADNxlq6dxkFeqWXe6/MwLOYkS3VWHM98i/QMc6G7Y RuTZE7lJowh7WTGurc1GtQlbkfJN2u6SZ1GnKTm4q7b1E+gvq6qh7+zs4LKG2HwmnjQsCd qmnzAq/UH5ctk+otiQENk1d4+x2hpbnD8lJVaRZ6W3j59aoJ4MZOKzfSyF0fqIEBtkBtiD UpfSQl8icXKkqiy4WKr4g/2l+ZQJpwUzL0kWJoNKaZ5xMk5HVkzKauDtH6g/TQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 805F826505; Tue, 15 Feb 2022 17:17:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 21FHHSYF066793; Tue, 15 Feb 2022 17:17:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 21FHHSeh066792; Tue, 15 Feb 2022 17:17:28 GMT (envelope-from git) Date: Tue, 15 Feb 2022 17:17:28 GMT Message-Id: <202202151717.21FHHSeh066792@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Robert Wing Subject: git: 4379c1da56fa - main - bhyve/snapshot: use a string for cmd element in the nvlist List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4379c1da56faa43ecc925e47707a2f51b488614e Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1644945448; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pIDDqdYrjm5hgXpPWOI/RHiBYReZxZH9YXiZspZYW4g=; b=PZl/+aQjtuqVQjH25jYV8xdKuCYjrdDWWCUbE3NX99jvZzB6HtkEX/KJn6IXOng4bmnLtO ldkVxxsZgz7tDep+KN0xDssFKued2WWi1zL10pfKDmZtz7jylUmunBSo1f9t0rIkW9jDmF +Q0nzt6+f16TIalhoAxKg6vLXxs7GptDnQL59kbXM6rx4BwjuAenpaEnWoxrnduKZJZQV/ BtW/wFfgwwQZ1zP+BfBCnjcokPGFfq09UUuyHCHRAq4zWCl8YewAzXZj6muHgdV3JoF3B/ T8YaSmQWrNbyo7vyhJ77u7JXe3ji9f1Inaz8/vvYv73S80YxMB8DyZbA593+kQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1644945448; a=rsa-sha256; cv=none; b=tgjoEhVHxXW6wka9pqnPx8Q/PcPnHlkEPC/LA2SbYQm/8pH/tuNXcXtNUJVP/dWcKt6sfM WQ6Tf9QmWUf0Fto/h0nTYave7tChTosYHnNfhOCVYsEmlMp3SA5xsL/kiEhKhJ2CAQ/lBB gaYKYJj0UYd+dwZvqEQiWuWp7DXfk911jmJea2EVgmCt/QkD2Dq9omxR9Vo821ak9l8ek6 IvHrBJ7Ja8evzj1iPiVa6mCiJcu+cZbyAFDw0Qxsoslx3ePMMf/MaaAZSQCcYKLiPLUMyq ehWm3YDrUxxVwJt84kSLiL4v9fJ1OIJPH3ionXPSZ8A5ac2FOzcVF4FCl8H0Vw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by rew: URL: https://cgit.FreeBSD.org/src/commit/?id=4379c1da56faa43ecc925e47707a2f51b488614e commit 4379c1da56faa43ecc925e47707a2f51b488614e Author: Robert Wing AuthorDate: 2022-02-15 17:12:15 +0000 Commit: Robert Wing CommitDate: 2022-02-15 17:12:15 +0000 bhyve/snapshot: use a string for cmd element in the nvlist The nvlist for a checkpoint request will now look like: { cmd="checkpoint", suspend="true/false", filename="afilename" } Reviewed by: jhb Suggested by: jhb Differential Revision: https://reviews.freebsd.org/D34237 --- usr.sbin/bhyve/snapshot.c | 27 +++++++++++++-------------- usr.sbin/bhyve/snapshot.h | 6 ------ usr.sbin/bhyvectl/bhyvectl.c | 9 +++++---- 3 files changed, 18 insertions(+), 24 deletions(-) diff --git a/usr.sbin/bhyve/snapshot.c b/usr.sbin/bhyve/snapshot.c index 66f05ed68bcd..b0cc8095c3cb 100644 --- a/usr.sbin/bhyve/snapshot.c +++ b/usr.sbin/bhyve/snapshot.c @@ -1443,24 +1443,23 @@ done: static int handle_message(struct vmctx *ctx, nvlist_t *nvl) { - int err, cmd; + int err; + const char *cmd; - if (!nvlist_exists_number(nvl, "cmd")) + if (!nvlist_exists_string(nvl, "cmd")) return (-1); - cmd = nvlist_get_number(nvl, "cmd"); - switch (cmd) { - case START_SUSPEND: - case START_CHECKPOINT: - if (!nvlist_exists_string(nvl, "filename")) - err = -1; - else - err = vm_checkpoint(ctx, nvlist_get_string(nvl, "filename"), - cmd == START_SUSPEND ? true : false); - break; - default: - EPRINTLN("Unrecognized checkpoint operation\n"); + cmd = nvlist_get_string(nvl, "cmd"); + if (strcmp(cmd, "checkpoint") == 0) { + if (!nvlist_exists_string(nvl, "filename") || + !nvlist_exists_bool(nvl, "suspend")) err = -1; + else + err = vm_checkpoint(ctx, nvlist_get_string(nvl, "filename"), + nvlist_get_bool(nvl, "suspend")); + } else { + EPRINTLN("Unrecognized checkpoint operation\n"); + err = -1; } if (err != 0) diff --git a/usr.sbin/bhyve/snapshot.h b/usr.sbin/bhyve/snapshot.h index ddf23b8c0619..718e48467f56 100644 --- a/usr.sbin/bhyve/snapshot.h +++ b/usr.sbin/bhyve/snapshot.h @@ -60,12 +60,6 @@ struct restore_state { ucl_object_t *meta_root_obj; }; -/* Messages that a bhyve process understands. */ -enum ipc_opcode { - START_CHECKPOINT, - START_SUSPEND, -}; - struct checkpoint_thread_info { struct vmctx *ctx; int socket_fd; diff --git a/usr.sbin/bhyvectl/bhyvectl.c b/usr.sbin/bhyvectl/bhyvectl.c index 560a3a3eb443..0480e1623621 100644 --- a/usr.sbin/bhyvectl/bhyvectl.c +++ b/usr.sbin/bhyvectl/bhyvectl.c @@ -1725,13 +1725,14 @@ done: } static int -snapshot_request(struct vmctx *ctx, const char *file, enum ipc_opcode code) +snapshot_request(struct vmctx *ctx, const char *file, bool suspend) { nvlist_t *nvl; nvl = nvlist_create(0); - nvlist_add_number(nvl, "cmd", code); + nvlist_add_string(nvl, "cmd", "checkpoint"); nvlist_add_string(nvl, "filename", file); + nvlist_add_bool(nvl, "suspend", suspend); return (send_message(ctx, nvl)); } @@ -2397,10 +2398,10 @@ main(int argc, char *argv[]) #ifdef BHYVE_SNAPSHOT if (!error && vm_checkpoint_opt) - error = snapshot_request(ctx, checkpoint_file, START_CHECKPOINT); + error = snapshot_request(ctx, checkpoint_file, false); if (!error && vm_suspend_opt) - error = snapshot_request(ctx, suspend_file, START_SUSPEND); + error = snapshot_request(ctx, suspend_file, true); #endif free (opts);