From nobody Mon Nov 25 12:33:51 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; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1602167687; cv=none; d=zohomail.com; s=zohoarc; b=IWEEmyKW7dKWbI5rRxc9h0fYSXUrfbLYDZ4Q17Axrgq4MY790JlLOOjIQCvxsRwKM0VZc/T8mEypm57s7eP8r6ecEFP8dtSgpdU+s5xKEJT7rmbdyFQHa/tTNw8apT/z17M7RdKooAifGXZvh4UnYmAYxuJD6XuNbkQbzaDCjhg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1602167687; 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:References:Sender:Subject:To; bh=tN9e8Iw0kQwQJSx1bSqOOKa5UZnP4ET4gFBYGEU+UjE=; b=nzcgQ5Ia7gKucogpdzMmiwdhGVf2/j86lL0DYepXykk+XtNwde7FC3ZxKA9MGg1H9BofzbJFN0Sd+1XVMKYZJu3bg/qaEySDUbXWb/KkiMpzMJkHVoDSQyiQwjFfT5gIKrB1LylkIBSr7zwEsl0x53d0egtaVnZ3DNFSXu3cw/8= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail 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 1602167687479469.9327569163379; Thu, 8 Oct 2020 07:34:47 -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-97-LgGjHFH9O0i1ftKH02vmug-1; Thu, 08 Oct 2020 10:34:43 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 1FEC3811067; Thu, 8 Oct 2020 14:33:58 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id EEDF86EF66; Thu, 8 Oct 2020 14:33:57 +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 B3E8C8C7C1; Thu, 8 Oct 2020 14:33:57 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 098EXpII018233 for ; Thu, 8 Oct 2020 10:33:51 -0400 Received: by smtp.corp.redhat.com (Postfix) id B72F9101F0D2; Thu, 8 Oct 2020 14:33:51 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast03.extmail.prod.ext.rdu2.redhat.com [10.11.55.19]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A835210BBCEC for ; Thu, 8 Oct 2020 14:33:44 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id C2756811E79 for ; Thu, 8 Oct 2020 14:33:44 +0000 (UTC) Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-19-H-UVQSpWPEeH79TuTHS66g-1; Thu, 08 Oct 2020 10:33:41 -0400 Received: by mail-wr1-f68.google.com with SMTP id n15so6875098wrq.2 for ; Thu, 08 Oct 2020 07:33:41 -0700 (PDT) Received: from localhost.localdomain (cpc75556-harg6-2-0-cust35.7-1.cable.virginm.net. [86.3.36.36]) by smtp.gmail.com with ESMTPSA id h206sm7795719wmf.47.2020.10.08.07.33.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 08 Oct 2020 07:33:39 -0700 (PDT) X-MC-Unique: LgGjHFH9O0i1ftKH02vmug-1 X-MC-Unique: H-UVQSpWPEeH79TuTHS66g-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=tN9e8Iw0kQwQJSx1bSqOOKa5UZnP4ET4gFBYGEU+UjE=; b=scHDBhi7oezCVbIRpS3A084cOhVyyuFj9lbcXxcgtm/pHN2+mhhO7utRDZKTc3TXNv 4aitnWju4OmrEhuDjL8gI3RPSm77c+eX1OkM2VAfws7r4YtO3Kow+vzOQkge/6orpGlg ZlpshcLd6syAp3WuCpezEu2PVYcojbkuTeS2AOqAoPf+ZSZwOoLoma6xsmDDZSlUu6rI 3I0iha6sS9ubNvwuDCs+EUL4VCIlOCmOIHlUVFXQIGuRtiv4sZecj+Je3xFXA4K7KGY+ 3WGbR/HkWPBpARPB8GgSXW4xb8+FVWsoITBfSrkrrUMaYhLCKpyrVZ4pPZ3++uQ1o1fg FxPw== X-Gm-Message-State: AOAM530uNV7JOerAxEpZyrKrtXAmIi1q65U85NrkHZlErTbCH11YVRYv WUESrTT6pQDWGk6qSR5pclmRzL26eXlAvQ== X-Google-Smtp-Source: ABdhPJynLupHuWsOqSMLnf5n7h2d+iVtC4OfQl67p3QNhOgWxvfHpReA+aD3wFIrv2nkZRzU8oHCug== X-Received: by 2002:adf:ecc1:: with SMTP id s1mr9603584wro.120.1602167619676; Thu, 08 Oct 2020 07:33:39 -0700 (PDT) From: Brian Turek To: libvir-list@redhat.com Subject: [libvirt PATCH v4 1/4] qemu: capabilities: add QEMU_CAPS_FSDEV_CREATEMODE Date: Thu, 8 Oct 2020 15:32:23 +0100 Message-Id: <20201008143225.45428-2-brian.turek@gmail.com> In-Reply-To: <20201008143225.45428-1-brian.turek@gmail.com> References: <20201008143225.45428-1-brian.turek@gmail.com> MIME-Version: 1.0 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-loop: libvir-list@redhat.com Cc: Brian Turek 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.79 on 10.5.11.13 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 Content-Type: text/plain; charset="utf-8" The QEMU 9pfs 'fmode' and 'dmode' options have existed since QEMU 2.10. Probe QEMU's command line set to check whether these options are available, and if yes, enable this new QEMU_CAPS_FSDEV_CREATEMODE capability on libvirt side. Signed-off-by: Brian Turek Reviewed-by: J=C3=A1n Tomko Reviewed-by: Peter Krempa --- Note that this is unchanged from the previous version that was reviewed by Peter Krempa. src/qemu/qemu_capabilities.c | 2 ++ src/qemu/qemu_capabilities.h | 1 + tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml | 1 + tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml | 1 + tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml | 1 + tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml | 1 + 36 files changed, 37 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 38b901a6c4..d2a745d8c5 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -600,6 +600,7 @@ VIR_ENUM_IMPL(virQEMUCaps, =20 /* 380 */ "usb-host.hostdevice", + "fsdev.createmode", ); =20 =20 @@ -3322,6 +3323,7 @@ static struct virQEMUCapsCommandLineProps virQEMUCaps= CommandLine[] =3D { { "smp-opts", "dies", QEMU_CAPS_SMP_DIES }, { "fsdev", "multidevs", QEMU_CAPS_FSDEV_MULTIDEVS }, { "fw_cfg", "file", QEMU_CAPS_FW_CFG }, + { "fsdev", "fmode", QEMU_CAPS_FSDEV_CREATEMODE }, /* Could have also c= hecked fsdev->dmode */ }; =20 static int diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 107056ba17..bd7412d6f7 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -580,6 +580,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for = syntax-check */ =20 /* 380 */ QEMU_CAPS_USB_HOST_HOSTDEVICE, /* -device usb-host.hostdevice */ + QEMU_CAPS_FSDEV_CREATEMODE, /* fsdev.createmode */ =20 QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml b/tests/qem= ucapabilitiesdata/caps_2.10.0.aarch64.xml index b0fcbc4218..77af6b0d7a 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml @@ -145,6 +145,7 @@ + 2010000 0 61700287 diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml b/tests/qemuc= apabilitiesdata/caps_2.10.0.ppc64.xml index edf01d2e2f..5fce7540f9 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml @@ -145,6 +145,7 @@ + 2010000 0 42900287 diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml b/tests/qemuc= apabilitiesdata/caps_2.10.0.s390x.xml index 98a3c0eec2..7b0153e272 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml @@ -111,6 +111,7 @@ + 2010000 0 39100287 diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml b/tests/qemu= capabilitiesdata/caps_2.10.0.x86_64.xml index 98b1a94349..7f45a473cb 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml @@ -189,6 +189,7 @@ + 2010000 0 43100287 diff --git a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml b/tests/qemuc= apabilitiesdata/caps_2.11.0.s390x.xml index 0391f4b81e..4b8ba3e557 100644 --- a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml @@ -119,6 +119,7 @@ + 2011000 0 39100288 diff --git a/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml b/tests/qemu= capabilitiesdata/caps_2.11.0.x86_64.xml index 9eaafb4ba6..b11d98a64f 100644 --- a/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml @@ -196,6 +196,7 @@ + 2011000 0 43100288 diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml b/tests/qem= ucapabilitiesdata/caps_2.12.0.aarch64.xml index a5d6dc3bef..224defd91d 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml @@ -162,6 +162,7 @@ + 2012000 0 61700289 diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml b/tests/qemuc= apabilitiesdata/caps_2.12.0.ppc64.xml index d1ed9f6e28..c967c3f142 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml @@ -163,6 +163,7 @@ + 2011090 0 42900289 diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml b/tests/qemuc= apabilitiesdata/caps_2.12.0.s390x.xml index cef6ebb9ad..f9e843e125 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml @@ -131,6 +131,7 @@ + 2012000 0 39100289 diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml b/tests/qemu= capabilitiesdata/caps_2.12.0.x86_64.xml index 6d48699e3e..7ec4c376e0 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml @@ -206,6 +206,7 @@ + 2011090 0 43100289 diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml b/tests/qemuca= pabilitiesdata/caps_3.0.0.ppc64.xml index e4a560bac5..e57def86bf 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml @@ -165,6 +165,7 @@ + 2012050 0 42900239 diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml b/tests/qemu= capabilitiesdata/caps_3.0.0.riscv32.xml index 71f9b0c37f..b7a79a95d6 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml @@ -101,6 +101,7 @@ + 3000000 0 0 diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml b/tests/qemu= capabilitiesdata/caps_3.0.0.riscv64.xml index 279078d541..66682cb112 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml @@ -101,6 +101,7 @@ + 3000000 0 0 diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml b/tests/qemuca= pabilitiesdata/caps_3.0.0.s390x.xml index f1ed34c612..994e49040b 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml @@ -134,6 +134,7 @@ + 3000000 0 39100239 diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_3.0.0.x86_64.xml index ae1836b28f..c5b56d3917 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml @@ -212,6 +212,7 @@ + 3000000 0 43100239 diff --git a/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml b/tests/qemuca= pabilitiesdata/caps_3.1.0.ppc64.xml index 0dc0393c22..a51b3b2164 100644 --- a/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml @@ -170,6 +170,7 @@ + 3000091 0 42900240 diff --git a/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_3.1.0.x86_64.xml index d4ff21fdac..5f4afa9129 100644 --- a/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml @@ -215,6 +215,7 @@ + 3000092 0 43100240 diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml b/tests/qemu= capabilitiesdata/caps_4.0.0.aarch64.xml index 404a39af03..c642f232b5 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml @@ -176,6 +176,7 @@ + 4000000 0 61700240 diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml b/tests/qemuca= pabilitiesdata/caps_4.0.0.ppc64.xml index cb0232173c..0581d0a9e8 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml @@ -184,6 +184,7 @@ + 4000000 0 42900240 diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml b/tests/qemu= capabilitiesdata/caps_4.0.0.riscv32.xml index 11475306f9..cfd6325c8a 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml @@ -177,6 +177,7 @@ + 4000000 0 0 diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml b/tests/qemu= capabilitiesdata/caps_4.0.0.riscv64.xml index 608590a35b..937b48ccfb 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml @@ -177,6 +177,7 @@ + 4000000 0 0 diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml b/tests/qemuca= pabilitiesdata/caps_4.0.0.s390x.xml index f4d20169e0..ca253ba1de 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml @@ -142,6 +142,7 @@ + 4000000 0 39100240 diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_4.0.0.x86_64.xml index e3f83372c2..ae81d12df3 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml @@ -221,6 +221,7 @@ + 4000000 0 43100240 diff --git a/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_4.1.0.x86_64.xml index c32d8ea5d8..b2d0c0b824 100644 --- a/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml @@ -227,6 +227,7 @@ + 4001000 0 43100241 diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml b/tests/qemu= capabilitiesdata/caps_4.2.0.aarch64.xml index 11a964ed39..ffb4fbd552 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml @@ -189,6 +189,7 @@ + 4001050 0 61700242 diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml b/tests/qemuca= pabilitiesdata/caps_4.2.0.ppc64.xml index 60aef01f7b..129272d985 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml @@ -190,6 +190,7 @@ + 4001050 0 42900242 diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml b/tests/qemuca= pabilitiesdata/caps_4.2.0.s390x.xml index 76e2747b65..fe9a5aa835 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml @@ -153,6 +153,7 @@ + 4002000 0 39100242 diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_4.2.0.x86_64.xml index fd63a0ee02..00900f5477 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml @@ -236,6 +236,7 @@ + 4002000 0 43100242 diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml b/tests/qemu= capabilitiesdata/caps_5.0.0.aarch64.xml index 928af2a01c..da8d1de258 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml @@ -199,6 +199,7 @@ + 5000000 0 61700241 diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml b/tests/qemuca= pabilitiesdata/caps_5.0.0.ppc64.xml index e8668a25a9..731676c06d 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml @@ -208,6 +208,7 @@ + 5000000 0 42900241 diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml b/tests/qemu= capabilitiesdata/caps_5.0.0.riscv64.xml index 85a8a46dac..34e6b11fe4 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml @@ -195,6 +195,7 @@ + 5000000 0 0 diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_5.0.0.x86_64.xml index 546b9b0422..3dbfaa95c2 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml @@ -243,6 +243,7 @@ + 5000000 0 43100241 diff --git a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_5.1.0.x86_64.xml index 987beb965e..da64009d67 100644 --- a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml @@ -243,6 +243,7 @@ + 5001000 0 43100242 diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_5.2.0.x86_64.xml index 3ee678ef8f..a91bfd432b 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml @@ -243,6 +243,7 @@ + 5001050 0 43100243 --=20 2.25.1 From nobody Mon Nov 25 12:33:51 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; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1602167673; cv=none; d=zohomail.com; s=zohoarc; b=Wz1a/gU5YFMsA+FpoM1MPPJjKtawJr7pmLaz9EF9fFunyt5UT/jS2HPVPcVSU8hT9CxEqIKak0Hg/Q8didPp6BfQQ/H8/25Qea1m44kp5sB+x40bf5lxkM95UP5S7D3nNDlOqNHeoRItCVT1ax81cDwvC8LNQFv+aQyyQnApjWM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1602167673; 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:References:Sender:Subject:To; bh=RwhOXdk1RNYeoyI56t6rPb8smjwi1e5EgY5ZQQ04XLs=; b=OMEURakombsQ+aLFvcSH2BWmdBZ35mKdo5Wbkqcve+bXrgr/MuslDaFma63Mwx4PAWDk+zVFohLWGFC1TypI6fwbzgeHAvxufPiWZsa/JNetW5Xl37qMItQJpylUlMCtAXCjRVOQQNgxGmc/s+wnlFZmSo0JTzxJiaQzJXa83zk= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail 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 1602167673444831.9160808898415; Thu, 8 Oct 2020 07:34:33 -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-523-Q4_X79fTO1W5H9B4jENBcA-1; Thu, 08 Oct 2020 10:34:28 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 27C6A108A520; Thu, 8 Oct 2020 14:33:54 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D3337838C6; Thu, 8 Oct 2020 14:33:53 +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 837448C7BF; Thu, 8 Oct 2020 14:33:53 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 098EXpBe018234 for ; Thu, 8 Oct 2020 10:33:52 -0400 Received: by smtp.corp.redhat.com (Postfix) id C9385207A644; Thu, 8 Oct 2020 14:33:51 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast06.extmail.prod.ext.rdu2.redhat.com [10.11.55.22]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C3E89207A815 for ; Thu, 8 Oct 2020 14:33:49 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 41BB81805C56 for ; Thu, 8 Oct 2020 14:33:49 +0000 (UTC) Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-317-qaLvLHlnM-6vXiH1xdHr-Q-1; Thu, 08 Oct 2020 10:33:47 -0400 Received: by mail-wr1-f50.google.com with SMTP id e18so6855026wrw.9 for ; Thu, 08 Oct 2020 07:33:46 -0700 (PDT) Received: from localhost.localdomain (cpc75556-harg6-2-0-cust35.7-1.cable.virginm.net. [86.3.36.36]) by smtp.gmail.com with ESMTPSA id h206sm7795719wmf.47.2020.10.08.07.33.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 08 Oct 2020 07:33:44 -0700 (PDT) X-MC-Unique: Q4_X79fTO1W5H9B4jENBcA-1 X-MC-Unique: qaLvLHlnM-6vXiH1xdHr-Q-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=RwhOXdk1RNYeoyI56t6rPb8smjwi1e5EgY5ZQQ04XLs=; b=I3rUeVIzTBlXz525y18gm6DAUr1tEkXkMpqHMPFHM1x0A2p67bXQVZMn/9e7VMTFnS 9qmnzo7EZAHK+rKJeDQfd0w+cJNgYGx3PAu4crc2bCnvw6u2CpCJXV3debq1Fg5gJpQz Rck3RDU7tlPrgTplMaqikqgQuzwHDe48cwqiPrRhXDDatjG6SKuD1HRqiIhFxnbvu5/E p8ZR6IRMRzmXtzliXCWtlq6zR7YwoZ9nStBil8wC36yRhZDK8j9FYu6o9y4eCcAyw4U7 dBb8mvtjmn1c+5B40EbJB1zq1q8UYscW76huWYwdBKgJqXDNEsFFV7pMLuLqMSewFBXH xy8Q== X-Gm-Message-State: AOAM533tchoaECPhv1oxmlngLf2grDizFhJqXFa1Xe26kGLjUkK1fEGO KUYvEqln0NkZxLx5R6FlXYiSA/toEuDSpg== X-Google-Smtp-Source: ABdhPJxrN+BuJwhIJjYvPEHLWpRjiq5AaGrCRXMOp6jUxnrAaiN8YE9FxBKxIU2VPerUYRDpuTduaQ== X-Received: by 2002:a5d:5543:: with SMTP id g3mr9838149wrw.154.1602167625615; Thu, 08 Oct 2020 07:33:45 -0700 (PDT) From: Brian Turek To: libvir-list@redhat.com Subject: [libvirt PATCH v4 2/4] qemu: add 'fmode' and 'dmode' options Date: Thu, 8 Oct 2020 15:32:24 +0100 Message-Id: <20201008143225.45428-3-brian.turek@gmail.com> In-Reply-To: <20201008143225.45428-1-brian.turek@gmail.com> References: <20201008143225.45428-1-brian.turek@gmail.com> MIME-Version: 1.0 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Cc: Brian Turek 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.79 on 10.5.11.13 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 Content-Type: text/plain; charset="utf-8" Expose QEMU's 9pfs 'fmode' and 'dmode' options via attributes on the 'filesystem' node in the domain XML. These options control the creation mode of files and directories, respectively, when using accessmode=3Dmapped. Signed-off-by: Brian Turek Reviewed-by: J=C3=A1n Tomko --- docs/schemas/domaincommon.rng | 16 +++++ src/conf/domain_conf.c | 29 +++++++++ src/conf/domain_conf.h | 2 + .../qemuxml2argvdata/virtio-9p-createmode.xml | 58 ++++++++++++++++++ .../virtio-9p-createmode.x86_64-latest.xml | 61 +++++++++++++++++++ tests/qemuxml2xmltest.c | 1 + 6 files changed, 167 insertions(+) create mode 100644 tests/qemuxml2argvdata/virtio-9p-createmode.xml create mode 100644 tests/qemuxml2xmloutdata/virtio-9p-createmode.x86_64-la= test.xml diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index 7d4b105981..a0f0eb5a23 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -26,6 +26,12 @@ =20 + + + 0[0-7]{3}|[0-7]{1,3} + + + @@ -2736,6 +2742,16 @@ + + + + + + + + + + diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 51efeb0e42..57ca2152ea 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -11471,6 +11471,8 @@ virDomainFSDefParseXML(virDomainXMLOptionPtr xmlopt, g_autofree char *units =3D NULL; g_autofree char *model =3D NULL; g_autofree char *multidevs =3D NULL; + g_autofree char *fmode =3D NULL; + g_autofree char *dmode =3D NULL; =20 ctxt->node =3D node; =20 @@ -11499,6 +11501,26 @@ virDomainFSDefParseXML(virDomainXMLOptionPtr xmlop= t, def->accessmode =3D VIR_DOMAIN_FS_ACCESSMODE_PASSTHROUGH; } =20 + fmode =3D virXMLPropString(node, "fmode"); + if (fmode) { + if ((virStrToLong_uip(fmode, NULL, 8, &def->fmode) < 0) || + (def->fmode > 0777)) { + virReportError(VIR_ERR_XML_ERROR, + _("invalid fmode: '%s'"), fmode); + goto error; + } + } + + dmode =3D virXMLPropString(node, "dmode"); + if (dmode) { + if ((virStrToLong_uip(dmode, NULL, 8, &def->dmode) < 0) || + (def->dmode > 0777)) { + virReportError(VIR_ERR_XML_ERROR, + _("invalid dmode: '%s'"), dmode); + goto error; + } + } + model =3D virXMLPropString(node, "model"); if (model) { if ((def->model =3D virDomainFSModelTypeFromString(model)) < 0 || @@ -26133,6 +26155,13 @@ virDomainFSDefFormat(virBufferPtr buf, } if (def->multidevs) virBufferAsprintf(buf, " multidevs=3D'%s'", multidevs); + + if (def->fmode) + virBufferAsprintf(buf, " fmode=3D'%04o'", def->fmode); + + if (def->dmode) + virBufferAsprintf(buf, " dmode=3D'%04o'", def->dmode); + virBufferAddLit(buf, ">\n"); =20 virBufferAdjustIndent(buf, 2); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 450686dfb5..51f70f9dd4 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -849,6 +849,8 @@ struct _virDomainFSDef { int wrpolicy; /* enum virDomainFSWrpolicy */ int format; /* virStorageFileFormat */ int model; /* virDomainFSModel */ + unsigned int fmode; + unsigned int dmode; int multidevs; /* virDomainFSMultidevs */ unsigned long long usage; /* in bytes */ virStorageSourcePtr src; diff --git a/tests/qemuxml2argvdata/virtio-9p-createmode.xml b/tests/qemuxm= l2argvdata/virtio-9p-createmode.xml new file mode 100644 index 0000000000..032b22a2da --- /dev/null +++ b/tests/qemuxml2argvdata/virtio-9p-createmode.xml @@ -0,0 +1,58 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219136 + 219136 + 1 + + hvm + + + + destroy + restart + destroy + + /usr/bin/qemu-system-x86_64 + +
+ + +
+ + + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + + + + + + + + + +
+ + + diff --git a/tests/qemuxml2xmloutdata/virtio-9p-createmode.x86_64-latest.xm= l b/tests/qemuxml2xmloutdata/virtio-9p-createmode.x86_64-latest.xml new file mode 100644 index 0000000000..7c374ca3a6 --- /dev/null +++ b/tests/qemuxml2xmloutdata/virtio-9p-createmode.x86_64-latest.xml @@ -0,0 +1,61 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219136 + 219136 + 1 + + hvm + + + + qemu64 + + + destroy + restart + destroy + + /usr/bin/qemu-system-x86_64 + +
+ + +
+ + + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + + + + + + + + + +
+ + + diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 2bf8dd5b14..17cbed97f9 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -1496,6 +1496,7 @@ mymain(void) DO_TEST_CAPS_ARCH_LATEST("x86_64-default-cpu-tcg-q35-4.2", "x86_64"); =20 DO_TEST_CAPS_LATEST("virtio-9p-multidevs"); + DO_TEST_CAPS_LATEST("virtio-9p-createmode"); DO_TEST("downscript", NONE); =20 cleanup: --=20 2.25.1 From nobody Mon Nov 25 12:33:51 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 63.128.21.124 as permitted sender) client-ip=63.128.21.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1602167686; cv=none; d=zohomail.com; s=zohoarc; b=ES/1nMGekE+PjiswhWNoNvCsQsseixbs4sM5JusbRrnlrBvfvzA7+K5ux+yMC77eE5lQqBWcCQhdZEe7OQYLLD2VEryHjR87eqxVcP6FesYUpO85oTNDUr41k2OW9iiBZAcQ8xT5cCEyhrFu2gNAEVNZyfyksmcec+NmOAI/LMo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1602167686; 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:References:Sender:Subject:To; bh=zzPWVD7FI0wvTxZ8Cm2UZ+FK+4Y5pvKYZZxSdQ6Z/Q8=; b=Mv0S4j0Q2TiaMSvG/iV6AkRxgeazgzigV8PPgn6y91OGNcAIi8s9Q9H2RBUnUmV1h5Xtnt9K11J4cD2AUyAmMnXuFHwMvnCAExRyngczawro9V/CnjZAJKkh/eLbhuwCB3Cw1IyWb7CcAuADhKs6UOyrTLtU9uI/4FZvWIk63pY= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by mx.zohomail.com with SMTPS id 1602167686807394.5064834258801; Thu, 8 Oct 2020 07:34:46 -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-568-hy_CWXdsP52aq42pTtGZZw-1; Thu, 08 Oct 2020 10:34:42 -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 957318C350F; Thu, 8 Oct 2020 14:33: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 5FF8C19930; Thu, 8 Oct 2020 14:33:56 +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 EF1951832FC2; Thu, 8 Oct 2020 14:33:55 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 098EXrHL018249 for ; Thu, 8 Oct 2020 10:33:53 -0400 Received: by smtp.corp.redhat.com (Postfix) id 2C22110AF436; Thu, 8 Oct 2020 14:33:53 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 27C8310AF428 for ; Thu, 8 Oct 2020 14:33:53 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 10BD189FEFE for ; Thu, 8 Oct 2020 14:33:53 +0000 (UTC) Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-24-sAsTpOY-NJ6mWg-5MtOw2g-1; Thu, 08 Oct 2020 10:33:50 -0400 Received: by mail-wr1-f45.google.com with SMTP id n18so6882395wrs.5 for ; Thu, 08 Oct 2020 07:33:50 -0700 (PDT) Received: from localhost.localdomain (cpc75556-harg6-2-0-cust35.7-1.cable.virginm.net. [86.3.36.36]) by smtp.gmail.com with ESMTPSA id h206sm7795719wmf.47.2020.10.08.07.33.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 08 Oct 2020 07:33:48 -0700 (PDT) X-MC-Unique: hy_CWXdsP52aq42pTtGZZw-1 X-MC-Unique: sAsTpOY-NJ6mWg-5MtOw2g-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zzPWVD7FI0wvTxZ8Cm2UZ+FK+4Y5pvKYZZxSdQ6Z/Q8=; b=cT6bOjbzHw+vzMsPBQ5ZeuSGtO7CjsBvkN7ZgqJPE8lakLDm4wOrITG4ElPAaKgAt2 BqFGzqcbxoJiWNdvjLkLnOeuIqGCleW6xGwhjKr2Wq0aSIa2o0GUf2RcsaM5h1tzQV4e /Z9VSkPiPywFpYLhHs6HrAyicEC5jINWIBzgBFqV8v7hyZV/LHh4VJ9QZ/zBY7O7TLng ryHXabjX7JfnXa84DJ+N6N7oxhM7PzjL2M5ziYRlflY8hKCFV51U3HnVBGpQ0o20havv S/XlivwAU6epUVBnFkR4dt71Rb6GD4e/YHak53GQd79xh9pBqB9Vtgrm/d2h16hP3RjN AWcQ== X-Gm-Message-State: AOAM533V0E0n40sgk7j+nMH4aIjo/PU7DQQJ2D9dZTkAcFz6+TJEJT0Y q0eOGZUPBHpUBv+mWZVCC9pA5uyEeGpJvg== X-Google-Smtp-Source: ABdhPJzu9/yyy58OGsGnozeFXXBJC6s/ZZa/puL4mYDjtu8CX5Nae1+K1RXc0v9YGH85vYI1jlvAWA== X-Received: by 2002:adf:e54b:: with SMTP id z11mr177969wrm.128.1602167628931; Thu, 08 Oct 2020 07:33:48 -0700 (PDT) From: Brian Turek To: libvir-list@redhat.com Subject: [libvirt PATCH v4 3/4] qemu: add support for 'fmode' and 'dmode' Date: Thu, 8 Oct 2020 15:32:25 +0100 Message-Id: <20201008143225.45428-4-brian.turek@gmail.com> In-Reply-To: <20201008143225.45428-1-brian.turek@gmail.com> References: <20201008143225.45428-1-brian.turek@gmail.com> MIME-Version: 1.0 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-loop: libvir-list@redhat.com Cc: Brian Turek 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 Content-Type: text/plain; charset="utf-8" Add logic to validate and then pass through 'fmode' and 'dmode' to the QEMU call. Signed-off-by: Brian Turek Reviewed-by: J=C3=A1n Tomko --- src/qemu/qemu_command.c | 6 +++ src/qemu/qemu_validate.c | 18 ++++++++ .../virtio-9p-createmode.x86_64-latest.args | 46 +++++++++++++++++++ tests/qemuxml2argvtest.c | 1 + 4 files changed, 71 insertions(+) create mode 100644 tests/qemuxml2argvdata/virtio-9p-createmode.x86_64-late= st.args diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 9519861e92..6ec34c8690 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -2275,6 +2275,12 @@ qemuBuildFSStr(virDomainFSDefPtr fs) } else if (fs->multidevs =3D=3D VIR_DOMAIN_FS_MULTIDEVS_WARN) { virBufferAddLit(&opt, ",multidevs=3Dwarn"); } + if (fs->fmode) { + virBufferAsprintf(&opt, ",fmode=3D%04o", fs->fmode); + } + if (fs->dmode) { + virBufferAsprintf(&opt, ",dmode=3D%04o", fs->dmode); + } } else if (fs->fsdriver =3D=3D VIR_DOMAIN_FS_DRIVER_TYPE_HANDLE) { /* removed since qemu 4.0.0 see v3.1.0-29-g93aee84f57 */ virBufferAddLit(&opt, "handle"); diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index a212605579..4757c55e13 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -3530,6 +3530,19 @@ qemuValidateDomainDeviceDefFS(virDomainFSDefPtr fs, return -1; } =20 + if ((fs->fmode !=3D 0) || (fs->dmode !=3D 0)) { + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_FSDEV_CREATEMODE)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("fmode and dmode are not supported with this QEM= U binary")); + return -1; + } + if (fs->accessmode !=3D VIR_DOMAIN_FS_ACCESSMODE_MAPPED) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("fmode and dmode must be used with accessmode= =3Dmapped")); + return -1; + } + } + switch ((virDomainFSDriverType) fs->fsdriver) { case VIR_DOMAIN_FS_DRIVER_TYPE_DEFAULT: case VIR_DOMAIN_FS_DRIVER_TYPE_PATH: @@ -3591,6 +3604,11 @@ qemuValidateDomainDeviceDefFS(virDomainFSDefPtr fs, _("virtiofs does not support multidevs")); return -1; } + if ((fs->fmode !=3D 0) || (fs->dmode !=3D 0)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("virtiofs does not support fmode and dmode")); + return -1; + } if (qemuValidateDomainDefVirtioFSSharedMemory(def) < 0) return -1; break; diff --git a/tests/qemuxml2argvdata/virtio-9p-createmode.x86_64-latest.args= b/tests/qemuxml2argvdata/virtio-9p-createmode.x86_64-latest.args new file mode 100644 index 0000000000..601d4d272e --- /dev/null +++ b/tests/qemuxml2argvdata/virtio-9p-createmode.x86_64-latest.args @@ -0,0 +1,46 @@ +LC_ALL=3DC \ +PATH=3D/bin \ +HOME=3D/tmp/lib/domain--1-QEMUGuest1 \ +USER=3Dtest \ +LOGNAME=3Dtest \ +XDG_DATA_HOME=3D/tmp/lib/domain--1-QEMUGuest1/.local/share \ +XDG_CACHE_HOME=3D/tmp/lib/domain--1-QEMUGuest1/.cache \ +XDG_CONFIG_HOME=3D/tmp/lib/domain--1-QEMUGuest1/.config \ +QEMU_AUDIO_DRV=3Dnone \ +/usr/bin/qemu-system-x86_64 \ +-name guest=3DQEMUGuest1,debug-threads=3Don \ +-S \ +-object secret,id=3DmasterKey0,format=3Draw,\ +file=3D/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ +-machine pc,accel=3Dtcg,usb=3Doff,dump-guest-core=3Doff,memory-backend=3Dp= c.ram \ +-cpu qemu64 \ +-m 214 \ +-object memory-backend-ram,id=3Dpc.ram,size=3D224395264 \ +-overcommit mem-lock=3Doff \ +-smp 1,sockets=3D1,cores=3D1,threads=3D1 \ +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=3Dcharmonitor,fd=3D1729,server,nowait \ +-mon chardev=3Dcharmonitor,id=3Dmonitor,mode=3Dcontrol \ +-rtc base=3Dutc \ +-no-shutdown \ +-no-acpi \ +-boot strict=3Don \ +-device piix3-usb-uhci,id=3Dusb,bus=3Dpci.0,addr=3D0x1.0x2 \ +-fsdev local,security_model=3Dmapped,fmode=3D0644,id=3Dfsdev-fs0,path=3D/e= xport/fs0 \ +-device virtio-9p-pci,id=3Dfs0,fsdev=3Dfsdev-fs0,mount_tag=3Dfs0,bus=3Dpci= .0,addr=3D0x2 \ +-fsdev local,security_model=3Dmapped,dmode=3D0755,id=3Dfsdev-fs1,path=3D/e= xport/fs1 \ +-device virtio-9p-pci,id=3Dfs1,fsdev=3Dfsdev-fs1,mount_tag=3Dfs1,bus=3Dpci= .0,addr=3D0x3 \ +-fsdev local,security_model=3Dmapped,fmode=3D0640,dmode=3D0750,id=3Dfsdev-= fs2,\ +path=3D/export/fs2 \ +-device virtio-9p-pci,id=3Dfs2,fsdev=3Dfsdev-fs2,mount_tag=3Dfs2,bus=3Dpci= .0,addr=3D0x4 \ +-fsdev local,security_model=3Dmapped,id=3Dfsdev-fs3,path=3D/export/fs3 \ +-device virtio-9p-pci,id=3Dfs3,fsdev=3Dfsdev-fs3,mount_tag=3Dfs3,bus=3Dpci= .0,addr=3D0x5 \ +-chardev pty,id=3Dcharserial0 \ +-device isa-serial,chardev=3Dcharserial0,id=3Dserial0 \ +-device virtio-balloon-pci,id=3Dballoon0,bus=3Dpci.0,addr=3D0xc \ +-sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,\ +resourcecontrol=3Ddeny \ +-msg timestamp=3Don diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 49567326d4..0bc8d529c3 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -3376,6 +3376,7 @@ mymain(void) DO_TEST_CAPS_ARCH_LATEST("x86_64-default-cpu-tcg-q35-4.2", "x86_64"); =20 DO_TEST_CAPS_LATEST("virtio-9p-multidevs"); + DO_TEST_CAPS_LATEST("virtio-9p-createmode"); =20 if (getenv("LIBVIRT_SKIP_CLEANUP") =3D=3D NULL) virFileDeleteTree(fakerootdir); --=20 2.25.1 From nobody Mon Nov 25 12:33:51 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; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1602167693; cv=none; d=zohomail.com; s=zohoarc; b=erYOQR9QugOxXsfpthfVCspiqWyLD4ZCpWAnbgknnULFdslwfogO3JPauoxF226d8jY4jnykiLfwnSZVwvymaDRvsbJi136jC4TSWSqg+y5W+V5Ext3T2CLDfaOVQ4fK0IbrFitmuAOsJTzinOdYla62o/yaclpRPWdvIFhLu+8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1602167693; 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:References:Sender:Subject:To; bh=U1D0O1B0nlBpz6qQSfmtT96i03J83+9ZyKB1NUV6dcs=; b=FZqSK72B77jr1lLHDOQC5p44nKpCgqmTan6T3Tr0oaWFRLtdGta2X0kqxksFqPXGCUa16DSR74Hj1xWdsNVgNNUBFMIw8EiKJ6tthbg6lOAoRioKf2ZHLBPRRMzQyzM9z3JtzAz7CIcbvJFLXkrIXuwoFbB3QiASDh8FxSu56HY= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail 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 1602167693026717.652875328392; Thu, 8 Oct 2020 07:34:53 -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-103-7c4uWN-iPemcMN0az9x4UA-1; Thu, 08 Oct 2020 10:34:49 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E16761060BB8; Thu, 8 Oct 2020 14:33:58 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id BA6435C1D0; Thu, 8 Oct 2020 14:33:58 +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 80CAA8C7C2; Thu, 8 Oct 2020 14:33:58 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 098EXvho018278 for ; Thu, 8 Oct 2020 10:33:57 -0400 Received: by smtp.corp.redhat.com (Postfix) id 4E4BE2166BA2; Thu, 8 Oct 2020 14:33:57 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 499872166BA0 for ; Thu, 8 Oct 2020 14:33:55 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 3D3FE89FEF6 for ; Thu, 8 Oct 2020 14:33:55 +0000 (UTC) Received: from mail-wm1-f65.google.com (mail-wm1-f65.google.com [209.85.128.65]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-451-haes96uYPASXyhJK8HFayQ-1; Thu, 08 Oct 2020 10:33:52 -0400 Received: by mail-wm1-f65.google.com with SMTP id f21so6690043wml.3 for ; Thu, 08 Oct 2020 07:33:51 -0700 (PDT) Received: from localhost.localdomain (cpc75556-harg6-2-0-cust35.7-1.cable.virginm.net. [86.3.36.36]) by smtp.gmail.com with ESMTPSA id h206sm7795719wmf.47.2020.10.08.07.33.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 08 Oct 2020 07:33:49 -0700 (PDT) X-MC-Unique: 7c4uWN-iPemcMN0az9x4UA-1 X-MC-Unique: haes96uYPASXyhJK8HFayQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=U1D0O1B0nlBpz6qQSfmtT96i03J83+9ZyKB1NUV6dcs=; b=eCRULUCwyylMRin+UJJU62HtlepoLrtJKYXsDeBrqyTcyImWiagxnbAesp2kJbUNiu 7cy96OJ0tEgzUY5q7MHXq1LTQ0uyEbi0+WQTo/z7zFZ2PZVyTJzOdlJKQd8R0K2pP27X VQNlNVmVvCv1/gIqBpSICYwFHHhcKkw8SIwc0INogJTIpanvORdtqKWNSoILokyJ9smr UxuJsVRIuEjUtCmxkKXKF/2VMy0WhyrXClLC4tzVzjOD6Hbe0Z4k8KRiV+9+WA2vVuFE dgFQaGBp3UDh7N5M8fSOY7ktk2VcX9s/f8KmmLtMkUn9IC53PUNthQ/qViRVjw6VVD5f Ul3w== X-Gm-Message-State: AOAM530g79NmtmDQ73/k8LvOukt3sn5X0in5rGg10WwaZf/qhrbjFYgh uWQqL8gskLB+Vc+74hJL2nRfjRZBgSWH/A== X-Google-Smtp-Source: ABdhPJxuL2f5+BgbgJz+5GZEkj4jMUUKfvfOvPiF0cXNOisSR53GTr8Cac0pclFpOcLtUgrivuf6lg== X-Received: by 2002:a7b:c081:: with SMTP id r1mr9092088wmh.158.1602167630437; Thu, 08 Oct 2020 07:33:50 -0700 (PDT) From: Brian Turek To: libvir-list@redhat.com Subject: [libvirt PATCH v4 4/4] qemu: add docs for 'fmode' and 'dmode' options Date: Thu, 8 Oct 2020 15:32:26 +0100 Message-Id: <20201008143225.45428-5-brian.turek@gmail.com> In-Reply-To: <20201008143225.45428-1-brian.turek@gmail.com> References: <20201008143225.45428-1-brian.turek@gmail.com> MIME-Version: 1.0 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-loop: libvir-list@redhat.com Cc: Brian Turek 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.79 on 10.5.11.16 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 Content-Type: text/plain; charset="utf-8" Adds documentation for QEMU 9pfs 'fmode' and 'dmode' options. Signed-off-by: Brian Turek Reviewed-by: J=C3=A1n Tomko --- docs/formatdomain.rst | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index cc4f91d4ea..48a5b821bd 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -3062,6 +3062,12 @@ A directory on the host that can be accessed directl= y from the guest. + + + + + + @@ -3140,6 +3146,13 @@ A directory on the host that can be accessed directl= y from the guest. "virtio-non-transitional", or "virtio". See `Virtio transitional devices <#elementsVirtioTransitional>`__ for more details. =20 + The filesystem element has optional attributes ``fmode`` and ``dmode``. + These two attributes control the creation mode for files and directories + when used with the ``mapped`` value for ``accessmode`` (:since:`since 6= .9.0, + requires QEMU 2.10` ). If not specified, QEMU creates files with mode + ``600`` and directories with mode ``700``. The setuid, setgid, and stic= ky + bit are unsupported. + The filesystem element has an optional attribute ``multidevs`` which specifies how to deal with a filesystem export containing more than one device, in order to avoid file ID collisions on guest when using 9pfs ( --=20 2.25.1