qemu-nbd: always compile in --aio=MODE option

The --aio=MODE option enables Linux AIO or Windows overlapped I/O.

The #ifdef CONFIG_LINUX_AIO was a layering violation that also prevented
Windows overlapped I/O from being used.

Now that raw-posix.c prints an error when Linux AIO has not been
compiled in, we can unconditionally compile the option into qemu-nbd.

After this patch qemu-nbd --aio=native works on Windows.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Stefan Hajnoczi 2015-07-23 13:48:36 +01:00 committed by Kevin Wolf
parent 04d71322c1
commit bb628e1af8

View file

@ -98,9 +98,7 @@ static void usage(const char *name)
" '[ID_OR_NAME]'\n" " '[ID_OR_NAME]'\n"
" -n, --nocache disable host cache\n" " -n, --nocache disable host cache\n"
" --cache=MODE set cache mode (none, writeback, ...)\n" " --cache=MODE set cache mode (none, writeback, ...)\n"
#ifdef CONFIG_LINUX_AIO
" --aio=MODE set AIO mode (native or threads)\n" " --aio=MODE set AIO mode (native or threads)\n"
#endif
" --discard=MODE set discard mode (ignore, unmap)\n" " --discard=MODE set discard mode (ignore, unmap)\n"
" --detect-zeroes=MODE set detect-zeroes mode (off, on, unmap)\n" " --detect-zeroes=MODE set detect-zeroes mode (off, on, unmap)\n"
"\n" "\n"
@ -412,9 +410,7 @@ int main(int argc, char **argv)
{ "load-snapshot", 1, NULL, 'l' }, { "load-snapshot", 1, NULL, 'l' },
{ "nocache", 0, NULL, 'n' }, { "nocache", 0, NULL, 'n' },
{ "cache", 1, NULL, QEMU_NBD_OPT_CACHE }, { "cache", 1, NULL, QEMU_NBD_OPT_CACHE },
#ifdef CONFIG_LINUX_AIO
{ "aio", 1, NULL, QEMU_NBD_OPT_AIO }, { "aio", 1, NULL, QEMU_NBD_OPT_AIO },
#endif
{ "discard", 1, NULL, QEMU_NBD_OPT_DISCARD }, { "discard", 1, NULL, QEMU_NBD_OPT_DISCARD },
{ "detect-zeroes", 1, NULL, QEMU_NBD_OPT_DETECT_ZEROES }, { "detect-zeroes", 1, NULL, QEMU_NBD_OPT_DETECT_ZEROES },
{ "shared", 1, NULL, 'e' }, { "shared", 1, NULL, 'e' },
@ -432,9 +428,7 @@ int main(int argc, char **argv)
int fd; int fd;
bool seen_cache = false; bool seen_cache = false;
bool seen_discard = false; bool seen_discard = false;
#ifdef CONFIG_LINUX_AIO
bool seen_aio = false; bool seen_aio = false;
#endif
pthread_t client_thread; pthread_t client_thread;
const char *fmt = NULL; const char *fmt = NULL;
Error *local_err = NULL; Error *local_err = NULL;
@ -467,7 +461,6 @@ int main(int argc, char **argv)
errx(EXIT_FAILURE, "Invalid cache mode `%s'", optarg); errx(EXIT_FAILURE, "Invalid cache mode `%s'", optarg);
} }
break; break;
#ifdef CONFIG_LINUX_AIO
case QEMU_NBD_OPT_AIO: case QEMU_NBD_OPT_AIO:
if (seen_aio) { if (seen_aio) {
errx(EXIT_FAILURE, "--aio can only be specified once"); errx(EXIT_FAILURE, "--aio can only be specified once");
@ -481,7 +474,6 @@ int main(int argc, char **argv)
errx(EXIT_FAILURE, "invalid aio mode `%s'", optarg); errx(EXIT_FAILURE, "invalid aio mode `%s'", optarg);
} }
break; break;
#endif
case QEMU_NBD_OPT_DISCARD: case QEMU_NBD_OPT_DISCARD:
if (seen_discard) { if (seen_discard) {
errx(EXIT_FAILURE, "--discard can only be specified once"); errx(EXIT_FAILURE, "--discard can only be specified once");