From nobody Thu Jan 26 18:54:26 2023 X-Original-To: dev-commits-src-branches@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 4P2qcy5QZdz3bPQN; Thu, 26 Jan 2023 18:54:26 +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 4P2qcy4bYzz461L; Thu, 26 Jan 2023 18:54:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1674759266; 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=TrILR93w5bu2k0MkIN3sNPWsp/B/buPGeatsphKSL3M=; b=F0zUOMVnBTNLfCHBhxJGwqtm4JVuhaSk+NsRka6b1ZljFOTHAj2ZrtujmUgryzXeuFGGcL nvmd+Rq/qXGKgllUkVHY7r+YLqsEfR8GLhHoPRka0qBmZiBS6XnMjzMLwQbryylvNf1KrE Gu15KRV4o3omVJ0ppVJ+6KzW66pRb4N0XQOph3r5uIQCLLjG7qufjLPpZ/MAi49vtBYf+S jB8g5Anmc/Th6tmBgnz7ajwXN1hWziGOxLdjrQCW8WPKfSfAXtc31FfryQICEGSLSSO4OY 84VTyMVjGNqP+9qGIKglPpLAJb11WlterY0gsfG6Epz75ES/nZsc9M6xGJXn/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1674759266; 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=TrILR93w5bu2k0MkIN3sNPWsp/B/buPGeatsphKSL3M=; b=ArV2/R+24yKtDwdNScbVjidCl9XnWsDyDBvQm9l+r64kxJaRrLu7zHFxq62K35+6z21sGF BFlnIrUKuvdgqGBYaGxcDYSdcxse/lv0tOxHZVDB8efbCdz5cGXq5E0UnsidKG6SIg79DU Z3BLcd0o8jqS0k97IqDT+rDQsfDuKtaj5z1Mze0a+FKkPzV9BRV8iu2WzwTpe3qRkrnAuc K+ialT7vRq3ZQ0tsWQGU2wVfdgX5YEiKm9U5VaVbrreU3CfTy+jX8GYV7cUxgttPx2Xpez UkjJbYiQpfNiOxXmULwaGtZKV44OZCKRoDw1UkVeFNSAnW5AQ+ps1EWL8FtyCw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1674759266; a=rsa-sha256; cv=none; b=ZO+eL4BtecGxPPu+yvFDGPFXJsrN2ohOp27qicERN9nLiWWLiWUxVlRt9tiUM21TYM2lki oml1Ly+I3H5vSnNPNwhr9e9Z/MK2hb147Py8tdOdJOdrQwfczrMXbT/S5RXE2Ro6RixqTJ hzHItK9uRRP08kUOSGWTRgJRFRrlI5GasY8dFOU5+ulAguAroveBUAobBKaljtFpkhOYAJ tYawoPLf4QTBgV/IxT0tmtVZ7QgT1+e/LemVMtF/8ngVvuHHevm+buBbP/N8qPCocl58uO ooFpMyprp2NfBi35DROeoUrryIHzfvTkumdUrjzx9yqycCuPAjZ+92fvPTFz4Q== 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 4P2qcy3hrSzg6B; Thu, 26 Jan 2023 18:54:26 +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 30QIsQ08034220; Thu, 26 Jan 2023 18:54:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 30QIsQwO034219; Thu, 26 Jan 2023 18:54:26 GMT (envelope-from git) Date: Thu, 26 Jan 2023 18:54:26 GMT Message-Id: <202301261854.30QIsQwO034219@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 395c0adb2ab5 - stable/13 - bhyve/snapshot: use a string for cmd element in the nvlist List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 395c0adb2ab59cf90c05b48749f5a5de9ae9426e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=395c0adb2ab59cf90c05b48749f5a5de9ae9426e commit 395c0adb2ab59cf90c05b48749f5a5de9ae9426e Author: Robert Wing AuthorDate: 2022-02-15 17:12:15 +0000 Commit: John Baldwin CommitDate: 2023-01-26 18:47:33 +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 (cherry picked from commit 4379c1da56faa43ecc925e47707a2f51b488614e) --- 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 62ef0acd8f95..aae8353b89db 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);