From nobody Mon Feb 9 11:31:54 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1691590489; cv=none; d=zohomail.com; s=zohoarc; b=hw6zyKrqEtdPsN1D3AWPmn398VrQ8e28/qU4//pQM+F7K+xT1FXVigRUftKqjhJJVrocnn8I+eLKACpLbGfpI9t008xF71wYbmgU0Bi848Y/WcyLMOyZCd+0l6EiMbC7vV3V3WZPB0aBgLhDj5WN+hPt3mNVXYXL2Q8lGkGIZUI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1691590489; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=MoBuFbv+ATQMYdba/eU8829wgPWZHwHhhV34yDuk5F8=; b=ESAJ5g+zvcLHknPvWswXgaN28k98nFlyLi2osrd4UjOzvz6heXX/6wDLuq3WNKvm1ijYDG5zIYcGc9jbyczroNTI93sybSXjGfkHnvoMk0sks7kSh0RkQjib/nPC3TuyeeRuJLTO+aBJuP7lkL9P0h48SkLTl/sk4BHCv3LH9Ac= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1691590489576625.4734019600753; Wed, 9 Aug 2023 07:14:49 -0700 (PDT) Received: from mimecast-mx02.redhat.com (66.187.233.73 [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-270-oqVVjY9fOQiI5Vutiu5YkA-1; Wed, 09 Aug 2023 10:14:45 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 01E7A3C0FC8F; Wed, 9 Aug 2023 14:14:43 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id E1D1D2026D4B; Wed, 9 Aug 2023 14:14:42 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 4121B19465B9; Wed, 9 Aug 2023 14:14:36 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 964D219465A4 for ; Wed, 9 Aug 2023 14:14:27 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 5B4A9401E9C; Wed, 9 Aug 2023 14:14:27 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.18]) by smtp.corp.redhat.com (Postfix) with ESMTP id C1A27401E30 for ; Wed, 9 Aug 2023 14:14:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1691590488; h=from:from:sender:sender: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: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=MoBuFbv+ATQMYdba/eU8829wgPWZHwHhhV34yDuk5F8=; b=fsppP+4mbiaWy42XM+BbpmKsEEFY54QREAO1nHPL9rRXU71pJvlP7fV8qKM01zaFtlfKWV iQITfjeudW5MIYLaJbsy85lp1PRY6iRm+EbbiZdHu1/QrcDdv5yxGk+15xCvAyrcwn52as zlgQEYcTGYStlPe3ixcHpzSb2yPPaXs= X-MC-Unique: oqVVjY9fOQiI5Vutiu5YkA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 3/4] virsh: doMigrate: Rework virsh option to migration flag conversion Date: Wed, 9 Aug 2023 16:14:22 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.10 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.4 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1691590490948100001 Content-Type: text/plain; charset="utf-8" Convert the flags declaratively as in the vast majority of cases it's a simple binary addition if the flag exists. In one instance there was also an additional check, which was moved up after the new code, and the error message was fixed. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- tools/virsh-domain.c | 108 +++++++++++++++++-------------------------- 1 file changed, 42 insertions(+), 66 deletions(-) diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index f8758f18a3..84bf62057b 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -11082,6 +11082,11 @@ static const vshCmdOptDef opts_migrate[] =3D { {.name =3D NULL} }; +struct doMigrateFlagMapping { + const char *optionname; + unsigned int migflag; +}; + static void doMigrate(void *opaque) { @@ -11099,6 +11104,32 @@ doMigrate(void *opaque) unsigned long long ullOpt =3D 0; int rv; virConnectPtr dconn =3D data->dconn; + size_t i; + + static const struct doMigrateFlagMapping flagmap[] =3D { + { "live", VIR_MIGRATE_LIVE }, + { "p2p", VIR_MIGRATE_PEER2PEER }, + { "tunnelled", VIR_MIGRATE_TUNNELLED }, + { "persistent", VIR_MIGRATE_PERSIST_DEST }, + { "undefinesource", VIR_MIGRATE_UNDEFINE_SOURCE }, + { "copy-storage-all", VIR_MIGRATE_NON_SHARED_DISK }, + { "copy-storage-inc", VIR_MIGRATE_NON_SHARED_INC }, + { "copy-storage-synchronous-writes", VIR_MIGRATE_NON_SHARED_SYNCHR= ONOUS_WRITES }, + { "change-protection", VIR_MIGRATE_CHANGE_PROTECTION }, + { "unsafe", VIR_MIGRATE_UNSAFE }, + { "compressed", VIR_MIGRATE_COMPRESSED }, + { "auto-converge", VIR_MIGRATE_AUTO_CONVERGE }, + { "rdma-pin-all", VIR_MIGRATE_RDMA_PIN_ALL }, + { "offline", VIR_MIGRATE_OFFLINE }, + { "abort-on-error", VIR_MIGRATE_ABORT_ON_ERROR }, + { "postcopy", VIR_MIGRATE_POSTCOPY }, + { "postcopy-resume", VIR_MIGRATE_POSTCOPY_RESUME }, + { "zerocopy", VIR_MIGRATE_ZEROCOPY }, + { "tls", VIR_MIGRATE_TLS }, + { "parallel", VIR_MIGRATE_PARALLEL }, + { "suspend", VIR_MIGRATE_PAUSED }, + }; + #ifndef WIN32 sigset_t sigmask, oldsigmask; @@ -11108,6 +11139,17 @@ doMigrate(void *opaque) goto out_sig; #endif /* !WIN32 */ + for (i =3D 0; i < G_N_ELEMENTS(flagmap); i++) { + if (vshCommandOptBool(cmd, flagmap[i].optionname)) + flags |=3D flagmap[i].migflag; + } + + if (flags & VIR_MIGRATE_NON_SHARED_SYNCHRONOUS_WRITES && + !(flags & (VIR_MIGRATE_NON_SHARED_DISK | VIR_MIGRATE_NON_SHARED_DI= SK))) { + vshError(ctl, "'--copy-storage-synchronous-writes' requires one of= '--copy-storage-all', '--copy-storage-inc'"); + goto out; + } + if (!(dom =3D virshCommandOptDomain(ctl, cmd, NULL))) goto out; @@ -11325,72 +11367,6 @@ doMigrate(void *opaque) VIR_MIGRATE_PARAM_TLS_DESTINATION, opt) < = 0) goto save_error; - if (vshCommandOptBool(cmd, "live")) - flags |=3D VIR_MIGRATE_LIVE; - if (vshCommandOptBool(cmd, "p2p")) - flags |=3D VIR_MIGRATE_PEER2PEER; - if (vshCommandOptBool(cmd, "tunnelled")) - flags |=3D VIR_MIGRATE_TUNNELLED; - - if (vshCommandOptBool(cmd, "persistent")) - flags |=3D VIR_MIGRATE_PERSIST_DEST; - if (vshCommandOptBool(cmd, "undefinesource")) - flags |=3D VIR_MIGRATE_UNDEFINE_SOURCE; - - if (vshCommandOptBool(cmd, "suspend")) - flags |=3D VIR_MIGRATE_PAUSED; - - if (vshCommandOptBool(cmd, "copy-storage-all")) - flags |=3D VIR_MIGRATE_NON_SHARED_DISK; - - if (vshCommandOptBool(cmd, "copy-storage-inc")) - flags |=3D VIR_MIGRATE_NON_SHARED_INC; - - if (vshCommandOptBool(cmd, "copy-storage-synchronous-writes")) { - if (!(flags & VIR_MIGRATE_NON_SHARED_DISK) && - !(flags & VIR_MIGRATE_NON_SHARED_INC)) { - vshError(ctl, "'--copy-storage-synchronous-writes' requires on= e of '--copy-storage-all', 'copy-storage-inc'"); - goto out; - } - flags |=3D VIR_MIGRATE_NON_SHARED_SYNCHRONOUS_WRITES; - } - - if (vshCommandOptBool(cmd, "change-protection")) - flags |=3D VIR_MIGRATE_CHANGE_PROTECTION; - - if (vshCommandOptBool(cmd, "unsafe")) - flags |=3D VIR_MIGRATE_UNSAFE; - - if (vshCommandOptBool(cmd, "compressed")) - flags |=3D VIR_MIGRATE_COMPRESSED; - - if (vshCommandOptBool(cmd, "auto-converge")) - flags |=3D VIR_MIGRATE_AUTO_CONVERGE; - - if (vshCommandOptBool(cmd, "rdma-pin-all")) - flags |=3D VIR_MIGRATE_RDMA_PIN_ALL; - - if (vshCommandOptBool(cmd, "offline")) - flags |=3D VIR_MIGRATE_OFFLINE; - - if (vshCommandOptBool(cmd, "abort-on-error")) - flags |=3D VIR_MIGRATE_ABORT_ON_ERROR; - - if (vshCommandOptBool(cmd, "postcopy")) - flags |=3D VIR_MIGRATE_POSTCOPY; - - if (vshCommandOptBool(cmd, "postcopy-resume")) - flags |=3D VIR_MIGRATE_POSTCOPY_RESUME; - - if (vshCommandOptBool(cmd, "zerocopy")) - flags |=3D VIR_MIGRATE_ZEROCOPY; - - if (vshCommandOptBool(cmd, "tls")) - flags |=3D VIR_MIGRATE_TLS; - - if (vshCommandOptBool(cmd, "parallel")) - flags |=3D VIR_MIGRATE_PARALLEL; - if (flags & VIR_MIGRATE_PEER2PEER || vshCommandOptBool(cmd, "direct"))= { if (virDomainMigrateToURI3(dom, desturi, params, nparams, flags) = =3D=3D 0) data->ret =3D 0; --=20 2.41.0