[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH -V6 21/21] virtio-9p: Create a syntactic shortcut fo
From: |
Aneesh Kumar K.V |
Subject: |
[Qemu-devel] [PATCH -V6 21/21] virtio-9p: Create a syntactic shortcut for the file-system pass-thru |
Date: |
Thu, 29 Apr 2010 17:45:03 +0530 |
From: Gautham R Shenoy <address@hidden>
Currently the commandline to create a virtual-filesystem pass-through between
the guest and the host is as follows:
#qemu -fsdev fstype,id=ID,path=path/to/share \
-device virtio-9p-pci,fsdev=ID,mount_tag=tag \
This patch provides a syntactic short-cut to achieve the same as follows:
#qemu -virtfs fstype,path=path/to/share,mount_tag=tag
This will be internally expanded as:
#qemu -fsdev fstype,id=tag,path=path/to/share, \
-device virtio-9p-pci,fsdev=tag,mount_tag=tag \
Signed-off-by: Gautham R Shenoy <address@hidden>
Signed-off-by: Aneesh Kumar K.V <address@hidden>
---
qemu-config.c | 22 +++++++++++++++++++++
qemu-config.h | 1 +
qemu-options.hx | 35 ++++++++++++++++++++++++++++++++++
vl.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 114 insertions(+), 0 deletions(-)
diff --git a/qemu-config.c b/qemu-config.c
index cda5060..d500885 100644
--- a/qemu-config.c
+++ b/qemu-config.c
@@ -169,6 +169,28 @@ QemuOptsList qemu_fsdev_opts = {
};
#endif
+#ifdef CONFIG_LINUX
+QemuOptsList qemu_virtfs_opts = {
+ .name = "virtfs",
+ .implied_opt_name = "fstype",
+ .head = QTAILQ_HEAD_INITIALIZER(qemu_virtfs_opts.head),
+ .desc = {
+ {
+ .name = "fstype",
+ .type = QEMU_OPT_STRING,
+ }, {
+ .name = "path",
+ .type = QEMU_OPT_STRING,
+ }, {
+ .name = "mount_tag",
+ .type = QEMU_OPT_STRING,
+ },
+
+ { /*End of list */ }
+ },
+};
+#endif
+
QemuOptsList qemu_device_opts = {
.name = "device",
.implied_opt_name = "driver",
diff --git a/qemu-config.h b/qemu-config.h
index 5f34803..dca69d4 100644
--- a/qemu-config.h
+++ b/qemu-config.h
@@ -5,6 +5,7 @@ extern QemuOptsList qemu_drive_opts;
extern QemuOptsList qemu_chardev_opts;
#ifdef CONFIG_LINUX
extern QemuOptsList qemu_fsdev_opts;
+extern QemuOptsList qemu_virtfs_opts;
#endif
extern QemuOptsList qemu_device_opts;
extern QemuOptsList qemu_netdev_opts;
diff --git a/qemu-options.hx b/qemu-options.hx
index e754ba1..12f6b51 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -510,6 +510,41 @@ Create a file-system-"device" for local-filesystem.
ETEXI
#endif
+#ifdef CONFIG_LINUX
+DEFHEADING(Virtual File system pass-through options:)
+
+DEF("virtfs", HAS_ARG, QEMU_OPTION_virtfs,
+ "-virtfs local,path=path,mount_tag=tag\n",
+ QEMU_ARCH_ALL)
+
+STEXI
+
+The general form of a Virtual File system pass-through option is:
address@hidden @option
+
address@hidden -virtfs @var{fstype} [,@var{options}]
address@hidden -virtfs
+Fstype is one of:
address@hidden,
+The specific Fstype will determine the applicable options.
+
+Options to each backend are described below.
+
address@hidden -virtfs local ,address@hidden ,address@hidden
+
+Create a Virtual file-system-pass through for local-filesystem.
+
address@hidden is only available on Linux.
+
address@hidden specifies the path to be exported. @option{path} is required.
+
address@hidden specifies the tag with which the exported file is mounted.
address@hidden is required.
+
address@hidden table
+ETEXI
+#endif
+
DEFHEADING()
DEF("name", HAS_ARG, QEMU_OPTION_name,
diff --git a/vl.c b/vl.c
index 287179c..59ae2fd 100644
--- a/vl.c
+++ b/vl.c
@@ -3095,6 +3095,62 @@ int main(int argc, char **argv, char **envp)
exit(1);
}
break;
+ case QEMU_OPTION_virtfs: {
+ char *arg_fsdev = NULL;
+ char *arg_9p = NULL;
+ int len = 0;
+
+ opts = qemu_opts_parse(&qemu_virtfs_opts, optarg, 1);
+ if (!opts) {
+ fprintf(stderr, "parse error: %s\n", optarg);
+ exit(1);
+ }
+
+ len = strlen(",id=,path=");
+ len += strlen(qemu_opt_get(opts, "fstype"));
+ len += strlen(qemu_opt_get(opts, "mount_tag"));
+ len += strlen(qemu_opt_get(opts, "path"));
+ arg_fsdev = qemu_malloc((len + 1) * sizeof(*arg_fsdev));
+
+ if (!arg_fsdev) {
+ fprintf(stderr, "No memory to parse -fsdev for %s\n",
+ optarg);
+ exit(1);
+ }
+
+ sprintf(arg_fsdev, "%s,id=%s,path=%s",
+ qemu_opt_get(opts, "fstype"),
+ qemu_opt_get(opts, "mount_tag"),
+ qemu_opt_get(opts, "path"));
+
+ len = strlen("virtio-9p-pci,fsdev=,mount_tag=");
+ len += 2*strlen(qemu_opt_get(opts, "mount_tag"));
+ arg_9p = qemu_malloc((len + 1) * sizeof(*arg_9p));
+
+ if (!arg_9p) {
+ fprintf(stderr, "No memory to parse -device for %s\n",
+ optarg);
+ exit(1);
+ }
+
+ sprintf(arg_9p, "virtio-9p-pci,fsdev=%s,mount_tag=%s",
+ qemu_opt_get(opts, "mount_tag"),
+ qemu_opt_get(opts, "mount_tag"));
+
+ if (!qemu_opts_parse(&qemu_fsdev_opts, arg_fsdev, 1)) {
+ fprintf(stderr, "parse error [fsdev]: %s\n", optarg);
+ exit(1);
+ }
+
+ if (!qemu_opts_parse(&qemu_device_opts, arg_9p, 1)) {
+ fprintf(stderr, "parse error [device]: %s\n", optarg);
+ exit(1);
+ }
+
+ qemu_free(arg_fsdev);
+ qemu_free(arg_9p);
+ break;
+ }
#endif
case QEMU_OPTION_serial:
add_device_config(DEV_SERIAL, optarg);
--
1.7.0.4.360.g11766c
- [Qemu-devel] [PATCH -V6 10/21] virtio-9p: Add P9_TATTACH support., (continued)
- [Qemu-devel] [PATCH -V6 10/21] virtio-9p: Add P9_TATTACH support., Aneesh Kumar K.V, 2010/04/29
- [Qemu-devel] [PATCH -V6 12/21] virtio-9p: Add P9_TWALK support, Aneesh Kumar K.V, 2010/04/29
- [Qemu-devel] [PATCH -V6 13/21] virtio-9p: Add P9_TOPEN support., Aneesh Kumar K.V, 2010/04/29
- [Qemu-devel] [PATCH -V6 15/21] virtio-9p: Add P9_TCLUNK support, Aneesh Kumar K.V, 2010/04/29
- [Qemu-devel] [PATCH -V6 16/21] virtio-9p: Add P9_TWRITE support, Aneesh Kumar K.V, 2010/04/29
- [Qemu-devel] [PATCH -V6 14/21] virtio-9p: Add P9_TREAD support, Aneesh Kumar K.V, 2010/04/29
- [Qemu-devel] [PATCH -V6 20/21] virtio-9p: Add P9_TFLUSH support, Aneesh Kumar K.V, 2010/04/29
- [Qemu-devel] [PATCH -V6 18/21] virtio-9p: Add P9_TWSTAT support, Aneesh Kumar K.V, 2010/04/29
- [Qemu-devel] [PATCH -V6 19/21] virtio-9p: Add P9_TREMOVE support., Aneesh Kumar K.V, 2010/04/29
- [Qemu-devel] [PATCH -V6 17/21] virtio-9p: Add P9_TCREATE support, Aneesh Kumar K.V, 2010/04/29
- [Qemu-devel] [PATCH -V6 21/21] virtio-9p: Create a syntactic shortcut for the file-system pass-thru,
Aneesh Kumar K.V <=