* [Qemu-devel] [PATCH 0/2] qemu-nbd: add --cache and --aio options @ 2012-07-18 13:17 Paolo Bonzini 2012-07-18 13:17 ` [Qemu-devel] [PATCH 1/2] qemu-nbd: reorganize help message Paolo Bonzini 2012-07-18 13:17 ` [Qemu-devel] [PATCH 2/2] qemu-nbd: add --cache and --aio options Paolo Bonzini 0 siblings, 2 replies; 4+ messages in thread From: Paolo Bonzini @ 2012-07-18 13:17 UTC (permalink / raw) To: qemu-devel Two simple patches that let qemu-nbd use native AIO and --cache=unsafe mode. Paolo Bonzini (2): qemu-nbd: reorganize help message qemu-nbd: add --cache and --aio options qemu-nbd.c | 75 +++++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 62 insertions(+), 13 deletions(-) -- 1.7.10.4 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Qemu-devel] [PATCH 1/2] qemu-nbd: reorganize help message 2012-07-18 13:17 [Qemu-devel] [PATCH 0/2] qemu-nbd: add --cache and --aio options Paolo Bonzini @ 2012-07-18 13:17 ` Paolo Bonzini 2012-07-18 13:17 ` [Qemu-devel] [PATCH 2/2] qemu-nbd: add --cache and --aio options Paolo Bonzini 1 sibling, 0 replies; 4+ messages in thread From: Paolo Bonzini @ 2012-07-18 13:17 UTC (permalink / raw) To: qemu-devel This patch separates qemu-nbd's options in logical groups, thus making the help message easier to read. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- qemu-nbd.c | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/qemu-nbd.c b/qemu-nbd.c index 5a0300e..1c32290 100644 --- a/qemu-nbd.c +++ b/qemu-nbd.c @@ -46,28 +46,39 @@ static int nb_fds; static void usage(const char *name) { - printf( + (printf) ( "Usage: %s [OPTIONS] FILE\n" "QEMU Disk Network Block Device Server\n" "\n" +" -h, --help display this help and exit\n" +" -V, --version output version information and exit\n" +"\n" +"Connection properties:\n" " -p, --port=PORT port to listen on (default `%d')\n" -" -o, --offset=OFFSET offset into the image\n" " -b, --bind=IFACE interface to bind to (default `0.0.0.0')\n" " -k, --socket=PATH path to the unix socket\n" " (default '"SOCKET_PATH"')\n" -" -r, --read-only export read-only\n" -" -P, --partition=NUM only expose partition NUM\n" -" -s, --snapshot use snapshot file\n" -" -n, --nocache disable host cache\n" -" -c, --connect=DEV connect FILE to the local NBD device DEV\n" -" -d, --disconnect disconnect the specified device\n" " -e, --shared=NUM device can be shared by NUM clients (default '1')\n" " -t, --persistent don't exit on the last connection\n" " -v, --verbose display extra debugging information\n" -" -h, --help display this help and exit\n" -" -V, --version output version information and exit\n" "\n" -"Report bugs to <anthony@codemonkey.ws>\n" +"Exposing part of the image:\n" +" -o, --offset=OFFSET offset into the image\n" +" -P, --partition=NUM only expose partition NUM\n" +"\n" +#ifdef __linux__ +"Kernel NBD client support:\n" +" -c, --connect=DEV connect FILE to the local NBD device DEV\n" +" -d, --disconnect disconnect the specified device\n" +"\n" +#endif +"\n" +"Block device options:\n" +" -r, --read-only export read-only\n" +" -s, --snapshot use snapshot file\n" +" -n, --nocache disable host cache\n" +"\n" +"Report bugs to <qemu-devel@nongnu.org>\n" , name, NBD_DEFAULT_PORT, "DEVICE"); } -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Qemu-devel] [PATCH 2/2] qemu-nbd: add --cache and --aio options 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 1 sibling, 0 replies; 4+ messages in thread From: Paolo Bonzini @ 2012-07-18 13:17 UTC (permalink / raw) To: qemu-devel 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 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Qemu-devel] [PULL 0/2] NBD changes for 2012-07-24 @ 2012-07-24 7:41 Paolo Bonzini 2012-07-24 7:41 ` [Qemu-devel] [PATCH 2/2] qemu-nbd: add --cache and --aio options Paolo Bonzini 0 siblings, 1 reply; 4+ messages in thread From: Paolo Bonzini @ 2012-07-24 7:41 UTC (permalink / raw) To: qemu-devel A small change, introducing the --cache and --aio options I needed while playing with block device mirroring. The following changes since commit a21143486b9c6d7a50b7b62877c02b3c686943cb: Merge remote-tracking branch 'stefanha/net' into staging (2012-07-23 13:15:34 -0500) are available in the git repository at: git://github.com/bonzini/qemu.git nbd-next for you to fetch changes up to 39a5235cd7f367cce7be7b3f4d258452452e38e3: qemu-nbd: add --cache and --aio options (2012-07-24 09:31:53 +0200) ---------------------------------------------------------------- Paolo Bonzini (2): qemu-nbd: reorganize help message qemu-nbd: add --cache and --aio options qemu-nbd.c | 75 +++++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 62 insertions(+), 13 deletions(-) -- 1.7.10.4 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Qemu-devel] [PATCH 2/2] qemu-nbd: add --cache and --aio options 2012-07-24 7:41 [Qemu-devel] [PULL 0/2] NBD changes for 2012-07-24 Paolo Bonzini @ 2012-07-24 7:41 ` Paolo Bonzini 0 siblings, 0 replies; 4+ messages in thread From: Paolo Bonzini @ 2012-07-24 7:41 UTC (permalink / raw) To: qemu-devel 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 ^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2012-07-24 7:42 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 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 ` [Qemu-devel] [PATCH 2/2] qemu-nbd: add --cache and --aio options Paolo Bonzini -- 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
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).