From nobody Thu May 2 08:30:43 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1557165611; cv=none; d=zoho.com; s=zohoarc; b=T/G3EhJQ1SutRZewfBPrKSe3T6lnHNqeZ8YRX/NaQs4WLO2zbFVbxiUbE6ma5jgeaAjgonOlqh3uzvqc+/Pi08UMANIazX5gf8JWW6T5Al5xHOMSdr7wjKrhQz26/bLCtmWRNOSg5kip1bmUk9v8Fh9KNhwE9OwOK5K4hsIwMdg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557165611; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To:ARC-Authentication-Results; bh=aYNSfLI1EB2FwxwOFQBv+9wHMzs8UdhjczvSCyUcYS0=; b=UxIV4dzA9qgfSaqf4PceKDIH6bK8kMW8fMkWAXDVSo9EnvPNpAuQTxHAJGosbP2yB5/UCZ722twaEAx5jHVKpdN8wYA6pvd/Q9BfLPHmslwmZ9/wxwbIG2q7W3HnPLipF7WLL1ExAzW7ZL+s9nLn7L6MvznET9mqQj3aNLBiXQM= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557165611202170.44315809132854; Mon, 6 May 2019 11:00:11 -0700 (PDT) Received: from localhost ([127.0.0.1]:60276 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hNhuI-000628-4S for importer@patchew.org; Mon, 06 May 2019 14:00:06 -0400 Received: from eggs.gnu.org ([209.51.188.92]:47907) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hNht1-0005Pf-9q for qemu-devel@nongnu.org; Mon, 06 May 2019 13:58:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hNhsz-0001wJ-V8 for qemu-devel@nongnu.org; Mon, 06 May 2019 13:58:47 -0400 Received: from kylie.crudebyte.com ([5.189.157.229]:33521) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hNhsz-0001p0-Ec for qemu-devel@nongnu.org; Mon, 06 May 2019 13:58:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=crudebyte.com; s=kylie; h=Content-Type:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender :Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=aYNSfLI1EB2FwxwOFQBv+9wHMzs8UdhjczvSCyUcYS0=; b=M0FbiC9oteJvA4hPm4dXm+hfPU SUPOUNzMLQNQjPexs5z/BiCvvWCDvT1suG30CU2gXRnM/9na/7q6tE+wv1dPTbph4tMwZCUd1DfZJ AhJ2upSod9PyrTYL9SeU5xWRa8gMDnCBUXSDmAjf+X8P4VBR5Q8MhyYTCDg69Tg5PyUph3+dupKE+ wv2AXRRczIMMpMxj6RhtIIdkP0A4qiqA3+mQtJH1a3cIKbPZnlYUnxJmSugZqILSV6JLFKz0WJjzI ASmgfYtqyBKDr9brjWPZ/FLxzTWZTdmcJSnTIfYUUTNiDbXv18sj/4jva9iVlYadxWYknLiYpLczX lRaFK+22MFTgJlLuffjhMa5zDRqRGubwyntqbbzJ9MxuJpRI9Hhq2X6Vh9VWxxiKkuWMbTD76F24p dLTwXgTXdTEDSS5t8In4XfzfKIPOW7LM7Y448QG6+OcuyD7pB4/6tQLJWLIQuedME0BvXVSEwKfGR Ppo0+LKAIiG/BeDGtyv9o/co2h/XLTenui040shm2pTI7O0wYkD6Hy5MKpbTtLLbuMq4BTggQX+9l p1Zvho0FuZEOXtUoWtAFugW5iE5zDqqtepaxnpwVmTc6ltvL1b+lWmVcyeseopc0OnZBv5nCGaRbH avIGoeeQhH1ycCIDzaKSeSSBQ6pB+vpCdvXllQhCk=; To: qemu-devel@nongnu.org Date: Mon, 06 May 2019 19:58:28 +0200 Message-ID: <1895198.u98Sn5qOsY@silver> In-Reply-To: <590216e2666653bac21d950aaba98f87d0a53324.1557093245.git.qemu_oss@crudebyte.com> References: <590216e2666653bac21d950aaba98f87d0a53324.1557093245.git.qemu_oss@crudebyte.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 5.189.157.229 Subject: [Qemu-devel] [libvirt patch] qemu: adds support for virtfs 9p argument 'vii' X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Christian Schoenebeck via Qemu-devel Reply-To: Christian Schoenebeck Cc: Greg Kurz , Antonios Motakis Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This is the counter part patch against latest libvirt git master head to support the 'vii' feature of patch 5, which introduces the XML config XML tag "important" on libvirt side. To stick with the previous example mentioned with patch 5, likewise libvirt XML configuration might then look like this: ... ... Like with the vii qemu virtfs command line argument, the order of the "important" tag defines which one gets the highest inode namespace (smallest generated suffix) on guest side. Signed-off-by: Christian Schoenebeck --- docs/schemas/domaincommon.rng | 6 ++++++ src/conf/domain_conf.c | 30 ++++++++++++++++++++++++++++++ src/conf/domain_conf.h | 3 +++ src/qemu/qemu_command.c | 10 ++++++++++ 4 files changed, 49 insertions(+) diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index 111b85c36f..c75edfc4d3 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -2515,6 +2515,12 @@ + + + + + + diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index b4fb6cf981..cc75c6a7dd 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2294,6 +2294,8 @@ virDomainFSDefNew(void) =20 void virDomainFSDefFree(virDomainFSDefPtr def) { + size_t i; + if (!def) return; =20 @@ -2302,6 +2304,13 @@ void virDomainFSDefFree(virDomainFSDefPtr def) virDomainDeviceInfoClear(&def->info); VIR_FREE(def->virtio); =20 + if (def->important) { + for (i =3D 0; i < def->nimportant; i++) + if (def->important[i]) + VIR_FREE(def->important[i]); + } + VIR_FREE(def->important); + VIR_FREE(def); } =20 @@ -10953,6 +10962,7 @@ virDomainFSDefParseXML(virDomainXMLOptionPtr xmlopt, VIR_AUTOFREE(char *) usage =3D NULL; VIR_AUTOFREE(char *) units =3D NULL; VIR_AUTOFREE(char *) model =3D NULL; + long n; =20 ctxt->node =3D node; =20 @@ -11001,6 +11011,12 @@ virDomainFSDefParseXML(virDomainXMLOptionPtr xmlop= t, 1, ULLONG_MAX, false) < 0) goto error; =20 + n =3D virXMLChildElementCount(node); + if (n > 0) { + if (VIR_ALLOC_N(def->important, n) < 0) + goto error; + } + cur =3D node->children; while (cur !=3D NULL) { if (cur->type =3D=3D XML_ELEMENT_NODE) { @@ -11039,6 +11055,8 @@ virDomainFSDefParseXML(virDomainXMLOptionPtr xmlopt, =20 if (virDomainVirtioOptionsParseXML(cur, &def->virtio) < 0) goto error; + } else if (virXMLNodeNameEqual(cur, "important")) { + def->important[def->nimportant++] =3D virXMLPropString(cur= , "path"); } } cur =3D cur->next; @@ -11107,6 +11125,8 @@ virDomainFSDefParseXML(virDomainXMLOptionPtr xmlopt, goto error; =20 cleanup: + if (def && def->important && !def->nimportant) + VIR_FREE(def->important); return def; =20 error: @@ -24601,6 +24621,7 @@ virDomainFSDefFormat(virBufferPtr buf, const char *src =3D def->src->path; VIR_AUTOCLEAN(virBuffer) driverBuf =3D VIR_BUFFER_INITIALIZER; int ret =3D -1; + size_t i; =20 if (!type) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -24689,6 +24710,15 @@ virDomainFSDefFormat(virBufferPtr buf, if (def->readonly) virBufferAddLit(buf, "\n"); =20 + if (def->important) { + for (i =3D 0; i < def->nimportant; ++i) { + if (!def->important[i]) continue; + virBufferAddLit(buf, "important[i]); + virBufferAddLit(buf, "/>\n"); + } + } + if (virDomainDeviceInfoFormat(buf, &def->info, flags) < 0) goto cleanup; =20 diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 01c22d8cc3..9bbd66d932 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -818,6 +818,9 @@ struct _virDomainFSDef { unsigned long long space_soft_limit; /* in bytes */ bool symlinksResolved; virDomainVirtioOptionsPtr virtio; + + size_t nimportant; + char **important; }; =20 =20 diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 50b4205267..2005ccadf8 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -2732,6 +2732,7 @@ qemuBuildFSStr(virDomainFSDefPtr fs) virBuffer opt =3D VIR_BUFFER_INITIALIZER; const char *driver =3D qemuDomainFSDriverTypeToString(fs->fsdriver); const char *wrpolicy =3D virDomainFSWrpolicyTypeToString(fs->wrpolicy); + size_t i; =20 if (fs->type !=3D VIR_DOMAIN_FS_TYPE_MOUNT) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", @@ -2775,6 +2776,15 @@ qemuBuildFSStr(virDomainFSDefPtr fs) if (fs->readonly) virBufferAddLit(&opt, ",readonly"); =20 + if (fs->important) { + for (i =3D 0; i < fs->nimportant; ++i) { + if (i =3D=3D 0) + virBufferAsprintf(&opt, ",vii=3D%s", fs->important[i]); + else + virBufferAsprintf(&opt, ":%s", fs->important[i]); + } + } + if (virBufferCheckError(&opt) < 0) goto error; =20 --=20 2.11.0