From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55683) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b0cnX-0001Wh-Rf for qemu-devel@nongnu.org; Wed, 11 May 2016 18:40:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b0cnQ-0000WX-LJ for qemu-devel@nongnu.org; Wed, 11 May 2016 18:40:06 -0400 From: Eric Blake Date: Wed, 11 May 2016 16:39:39 -0600 Message-Id: <1463006384-7734-7-git-send-email-eblake@redhat.com> In-Reply-To: <1463006384-7734-1-git-send-email-eblake@redhat.com> References: <1463006384-7734-1-git-send-email-eblake@redhat.com> Subject: [Qemu-devel] [PATCH v4 06/11] nbd: Group all Linux-specific ioctl code in one place List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: qemu-block@nongnu.org, pbonzini@redhat.com, alex@alex.org.uk NBD ioctl()s are used to manage an NBD client session where initial handshake is done in userspace, but then the transmission phase is handed off to the kernel through a /dev/nbdX device. As such, all ioctls sent to the kernel on the /dev/nbdX fd belong in client.c; nbd_disconnect() was out-of-place in server.c. Signed-off-by: Eric Blake --- nbd/client.c | 13 +++++++++++++ nbd/server.c | 18 ------------------ 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/nbd/client.c b/nbd/client.c index 42e4e52..ae9fdd4 100644 --- a/nbd/client.c +++ b/nbd/client.c @@ -667,6 +667,15 @@ int nbd_client(int fd) errno = serrno; return ret; } + +int nbd_disconnect(int fd) +{ + ioctl(fd, NBD_CLEAR_QUE); + ioctl(fd, NBD_DISCONNECT); + ioctl(fd, NBD_CLEAR_SOCK); + return 0; +} + #else int nbd_init(int fd, QIOChannelSocket *ioc, uint32_t flags, off_t size) { @@ -677,6 +686,10 @@ int nbd_client(int fd) { return -ENOTSUP; } +int nbd_disconnect(int fd) +{ + return -ENOTSUP; +} #endif ssize_t nbd_send_request(QIOChannel *ioc, struct nbd_request *request) diff --git a/nbd/server.c b/nbd/server.c index 2ef2dfa..77b0385 100644 --- a/nbd/server.c +++ b/nbd/server.c @@ -624,24 +624,6 @@ fail: return rc; } -#ifdef __linux__ - -int nbd_disconnect(int fd) -{ - ioctl(fd, NBD_CLEAR_QUE); - ioctl(fd, NBD_DISCONNECT); - ioctl(fd, NBD_CLEAR_SOCK); - return 0; -} - -#else - -int nbd_disconnect(int fd) -{ - return -ENOTSUP; -} -#endif - static ssize_t nbd_receive_request(QIOChannel *ioc, struct nbd_request *request) { uint8_t buf[NBD_REQUEST_SIZE]; -- 2.5.5