From nobody Fri Apr 26 19:13:32 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) client-ip=216.205.24.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 216.205.24.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=1602459906; cv=none; d=zohomail.com; s=zohoarc; b=donaMD4qadghl/C3DHB69qkOvVq/zGIblumgEBjQ/IGwZ3V+GFM8UpF6NMNXXmoRGz2B43X3RhNOfMxn6Yq/oWxo/7dj3+EDlIH7k/fdSvCJiJJIqYncdkjwvMTuw1QnqqVyEd4Epmj1UQcRQ6p7piuFuYMwt/jdtLjl9mv9nho= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1602459906; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=fGF7Gyq28AVTZ9ZAoqTPSs4mHx/2NvfX6ye7R6/b9vA=; b=jffiaOsuBfiP365rq9faXkZ6KGEeJgp6gl27JAq73blZQUECiPiyMBwssBYqvhQHgfnZ/L7Ev1edu1Sba4CFRT7SSJ2VqznlqRL7bmXQGuX+wnPqvbjvwCphJ/xIWRV/sX3dxKKiyTawo6b1DVrSYnWNN7ngSHL1XpEWKn34h4g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by mx.zohomail.com with SMTPS id 1602459906444969.2912449475411; Sun, 11 Oct 2020 16:45:06 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-115-CQwjK5aoOcGr_Jx1t8TEhQ-1; Sun, 11 Oct 2020 19:45:03 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 6EC78107ACF5; Sun, 11 Oct 2020 23:44:56 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 269B31964A; Sun, 11 Oct 2020 23:44:51 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 4B5FB18077BC; Sun, 11 Oct 2020 23:44:47 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 09BNiigJ001856 for ; Sun, 11 Oct 2020 19:44:44 -0400 Received: by smtp.corp.redhat.com (Postfix) id 8AC105C22D; Sun, 11 Oct 2020 23:44:44 +0000 (UTC) Received: from colepc.home (ovpn-113-130.rdu2.redhat.com [10.10.113.130]) by smtp.corp.redhat.com (Postfix) with ESMTP id 337FF5C22B; Sun, 11 Oct 2020 23:44:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1602459905; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=fGF7Gyq28AVTZ9ZAoqTPSs4mHx/2NvfX6ye7R6/b9vA=; b=EUkxGsFJJP1CesD85bzjJTW1qambxHqHwSgrtqBqSruJbgo7cq/CTJMygr+KZz2sXyBkMW ZMHv7iSPdxXxcHN0sx3UoQKrAlqhF//QLAyGoia8yUyJoqIs4xKhPTnNi5g0poRbKLUlv4 OtJqY0CbJS6RbjgSmCLjVxxDtWFGFko= X-MC-Unique: CQwjK5aoOcGr_Jx1t8TEhQ-1 From: Cole Robinson To: libvirt-list@redhat.com Subject: [PATCH] qemu: migration: don't open storage driver too early Date: Sun, 11 Oct 2020 19:44:36 -0400 Message-Id: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Cc: Cole Robinson X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" If storage migration is requested, and the destination storage does not exist on the remote host, qemu's migration support will call into the libvirt storage driver to precreate the destination storage. The storage driver virConnectPtr is opened too early though, adding an unnecessary dependency on the storage driver for several cases that don't require it. This currently requires kubevirt to install the storage driver even though they aren't actually using it. Push the virGetConnectStorage calls to right before the cases they are actually needed. Signed-off-by: Cole Robinson Reviewed-by: Michal Privoznik --- src/qemu/qemu_migration.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 2000c86640..99a6b41483 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -169,8 +169,7 @@ qemuMigrationSrcRestoreDomainState(virQEMUDriverPtr dri= ver, virDomainObjPtr vm) =20 =20 static int -qemuMigrationDstPrecreateDisk(virConnectPtr conn, - virDomainDiskDefPtr disk, +qemuMigrationDstPrecreateDisk(virDomainDiskDefPtr disk, unsigned long long capacity) { int ret =3D -1; @@ -181,6 +180,7 @@ qemuMigrationDstPrecreateDisk(virConnectPtr conn, g_auto(virBuffer) buf =3D VIR_BUFFER_INITIALIZER; const char *format =3D NULL; unsigned int flags =3D 0; + virConnectPtr conn =3D NULL; =20 VIR_DEBUG("Precreate disk type=3D%s", virStorageTypeToString(disk->src= ->type)); =20 @@ -204,6 +204,9 @@ qemuMigrationDstPrecreateDisk(virConnectPtr conn, *volName =3D '\0'; volName++; =20 + if (!(conn =3D virGetConnectStorage())) + goto cleanup; + if (!(pool =3D virStoragePoolLookupByTargetPath(conn, basePath))) goto cleanup; format =3D virStorageFileFormatTypeToString(disk->src->format); @@ -212,6 +215,9 @@ qemuMigrationDstPrecreateDisk(virConnectPtr conn, break; =20 case VIR_STORAGE_TYPE_VOLUME: + if (!(conn =3D virGetConnectStorage())) + goto cleanup; + if (!(pool =3D virStoragePoolLookupByName(conn, disk->src->srcpool= ->pool))) goto cleanup; format =3D virStorageFileFormatTypeToString(disk->src->format); @@ -270,6 +276,7 @@ qemuMigrationDstPrecreateDisk(virConnectPtr conn, VIR_FREE(volStr); virObjectUnref(vol); virObjectUnref(pool); + virObjectUnref(conn); return ret; } =20 @@ -304,13 +311,10 @@ qemuMigrationDstPrecreateStorage(virDomainObjPtr vm, { int ret =3D -1; size_t i =3D 0; - virConnectPtr conn; =20 if (!nbd || !nbd->ndisks) return 0; =20 - if (!(conn =3D virGetConnectStorage())) - return -1; =20 for (i =3D 0; i < nbd->ndisks; i++) { virDomainDiskDefPtr disk; @@ -349,13 +353,12 @@ qemuMigrationDstPrecreateStorage(virDomainObjPtr vm, =20 VIR_DEBUG("Proceeding with disk source %s", NULLSTR(diskSrcPath)); =20 - if (qemuMigrationDstPrecreateDisk(conn, disk, nbd->disks[i].capaci= ty) < 0) + if (qemuMigrationDstPrecreateDisk(disk, nbd->disks[i].capacity) < = 0) goto cleanup; } =20 ret =3D 0; cleanup: - virObjectUnref(conn); return ret; } =20 --=20 2.28.0