From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH 2/2] qemu-nbd: add --cache and --aio options
Date: Wed, 18 Jul 2012 15:17:36 +0200 [thread overview]
Message-ID: <1342617456-21725-3-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1342617456-21725-1-git-send-email-pbonzini@redhat.com>
Add two options to tune the I/O implementation of qemu-nbd, matching
the possibilities given by the QEMU -drive option.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
qemu-nbd.c | 42 ++++++++++++++++++++++++++++++++++++++++--
1 file changed, 40 insertions(+), 2 deletions(-)
diff --git a/qemu-nbd.c b/qemu-nbd.c
index 1c32290..1c1cf6a 100644
--- a/qemu-nbd.c
+++ b/qemu-nbd.c
@@ -33,7 +33,9 @@
#include <libgen.h>
#include <pthread.h>
-#define SOCKET_PATH "/var/lock/qemu-nbd-%s"
+#define SOCKET_PATH "/var/lock/qemu-nbd-%s"
+#define QEMU_NBD_OPT_CACHE 1
+#define QEMU_NBD_OPT_AIO 2
static NBDExport *exp;
static int verbose;
@@ -77,6 +79,10 @@ static void usage(const char *name)
" -r, --read-only export read-only\n"
" -s, --snapshot use snapshot file\n"
" -n, --nocache disable host cache\n"
+" --cache=MODE set cache mode (none, writeback, ...)\n"
+#ifdef CONFIG_LINUX_AIO
+" --aio=MODE set AIO mode (native or threads)\n"
+#endif
"\n"
"Report bugs to <qemu-devel@nongnu.org>\n"
, name, NBD_DEFAULT_PORT, "DEVICE");
@@ -306,6 +312,10 @@ int main(int argc, char **argv)
{ "disconnect", 0, NULL, 'd' },
{ "snapshot", 0, NULL, 's' },
{ "nocache", 0, NULL, 'n' },
+ { "cache", 1, NULL, QEMU_NBD_OPT_CACHE },
+#ifdef CONFIG_LINUX_AIO
+ { "aio", 1, NULL, QEMU_NBD_OPT_AIO },
+#endif
{ "shared", 1, NULL, 'e' },
{ "persistent", 0, NULL, 't' },
{ "verbose", 0, NULL, 'v' },
@@ -320,6 +330,10 @@ int main(int argc, char **argv)
int ret;
int fd;
int persistent = 0;
+ bool seen_cache = false;
+#ifdef CONFIG_LINUX_AIO
+ bool seen_aio = false;
+#endif
pthread_t client_thread;
/* The client thread uses SIGTERM to interrupt the server. A signal
@@ -336,8 +350,32 @@ int main(int argc, char **argv)
flags |= BDRV_O_SNAPSHOT;
break;
case 'n':
- flags |= BDRV_O_NOCACHE | BDRV_O_CACHE_WB;
+ optarg = (char *) "none";
+ /* fallthrough */
+ case QEMU_NBD_OPT_CACHE:
+ if (seen_cache) {
+ errx(EXIT_FAILURE, "-n and --cache can only be specified once");
+ }
+ seen_cache = true;
+ if (bdrv_parse_cache_flags(optarg, &flags) == -1) {
+ errx(EXIT_FAILURE, "Invalid cache mode `%s'", optarg);
+ }
break;
+#ifdef CONFIG_LINUX_AIO
+ case QEMU_NBD_OPT_AIO:
+ if (seen_aio) {
+ errx(EXIT_FAILURE, "--aio can only be specified once");
+ }
+ seen_aio = true;
+ if (!strcmp(optarg, "native")) {
+ flags |= BDRV_O_NATIVE_AIO;
+ } else if (!strcmp(optarg, "threads")) {
+ /* this is the default */
+ } else {
+ errx(EXIT_FAILURE, "invalid aio mode `%s'", optarg);
+ }
+ break;
+#endif
case 'b':
bindto = optarg;
break;
--
1.7.10.4
next prev parent reply other threads:[~2012-07-18 13:17 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-18 13:17 [Qemu-devel] [PATCH 0/2] qemu-nbd: add --cache and --aio options Paolo Bonzini
2012-07-18 13:17 ` [Qemu-devel] [PATCH 1/2] qemu-nbd: reorganize help message Paolo Bonzini
2012-07-18 13:17 ` Paolo Bonzini [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-07-24 7:41 [Qemu-devel] [PULL 0/2] NBD changes for 2012-07-24 Paolo Bonzini
2012-07-24 7:41 ` [Qemu-devel] [PATCH 2/2] qemu-nbd: add --cache and --aio options Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1342617456-21725-3-git-send-email-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).