diff options
| author | Peter Maydell <peter.maydell@linaro.org> | 2021-02-12 22:27:47 +0000 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2021-02-12 22:27:47 +0000 |
| commit | abb8b29aff352f226bf91cb59e5ac7e3e6082ce8 (patch) | |
| tree | 6128f8abe8437d1870dba2bf1eb048460887dd25 /qemu-nbd.c | |
| parent | eac92d316351b855ba79eb374dd21cc367f1f9c1 (diff) | |
| parent | 594427fc56758cb944a85914eefe722cc2c667b8 (diff) | |
| download | focaccia-qemu-abb8b29aff352f226bf91cb59e5ac7e3e6082ce8.tar.gz focaccia-qemu-abb8b29aff352f226bf91cb59e5ac7e3e6082ce8.zip | |
Merge remote-tracking branch 'remotes/ericb/tags/pull-nbd-2021-02-12' into staging
nbd patches for 2021-02-12 - let qemu-nbd handle larger backlog of connecting clients - fix a few NBD-related iotest failures - add block cancellation hook for faster response to NBD failures # gpg: Signature made Fri 12 Feb 2021 19:57:56 GMT # gpg: using RSA key 71C2CC22B1C4602927D2F3AAA7A16B4A2527436A # gpg: Good signature from "Eric Blake <eblake@redhat.com>" [full] # gpg: aka "Eric Blake (Free Software Programmer) <ebb9@byu.net>" [full] # gpg: aka "[jpeg image of size 6874]" [full] # Primary key fingerprint: 71C2 CC22 B1C4 6029 27D2 F3AA A7A1 6B4A 2527 436A * remotes/ericb/tags/pull-nbd-2021-02-12: iotests/264: add backup-cancel test-case block/backup: implement .cancel job handler iotests/264: add mirror-cancel test-case iotests.py: qemu_nbd_popen: remove pid file after use iotests/264: move to python unittest block/mirror: implement .cancel job handler job: add .cancel handler for the driver block/raw-format: implement .bdrv_cancel_in_flight handler block/nbd: implement .bdrv_cancel_in_flight block: add new BlockDriver handler: bdrv_cancel_in_flight io: error_prepend() in qio_channel_readv_full_all() causes segfault iotests/210: Fix reference output qemu-nbd: Permit --shared=0 for unlimited clients qemu-nbd: Use SOMAXCONN for socket listen() backlog Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'qemu-nbd.c')
| -rw-r--r-- | qemu-nbd.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/qemu-nbd.c b/qemu-nbd.c index 608c63e82a..b1b9430a8f 100644 --- a/qemu-nbd.c +++ b/qemu-nbd.c @@ -328,7 +328,7 @@ static void *nbd_client_thread(void *arg) static int nbd_can_accept(void) { - return state == RUNNING && nb_fds < shared; + return state == RUNNING && (shared == 0 || nb_fds < shared); } static void nbd_update_server_watch(void); @@ -707,7 +707,7 @@ int main(int argc, char **argv) break; case 'e': if (qemu_strtoi(optarg, NULL, 0, &shared) < 0 || - shared < 1) { + shared < 0) { error_report("Invalid shared device number '%s'", optarg); exit(EXIT_FAILURE); } @@ -964,8 +964,16 @@ int main(int argc, char **argv) server = qio_net_listener_new(); if (socket_activation == 0) { + int backlog; + + if (persistent || shared == 0) { + backlog = SOMAXCONN; + } else { + backlog = MIN(shared, SOMAXCONN); + } saddr = nbd_build_socket_address(sockpath, bindto, port); - if (qio_net_listener_open_sync(server, saddr, 1, &local_err) < 0) { + if (qio_net_listener_open_sync(server, saddr, backlog, + &local_err) < 0) { object_unref(OBJECT(server)); error_report_err(local_err); exit(EXIT_FAILURE); |