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:
		
							parent
							
								
									04d71322c1
								
							
						
					
					
						commit
						bb628e1af8
					
				@ -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");
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user