diff options
author | Eric Blake <eblake@redhat.com> | 2016-05-11 16:39:39 -0600 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2016-06-16 18:39:05 +0200 |
commit | 98494e3b926ad62c5644fd84a37f04b5e7abb7a6 (patch) | |
tree | c8f37c31ddc10551f7602512b3c9968a99c1f89e /nbd/client.c | |
parent | ab7c548e266a6324db0994cea58c35b3dc87bade (diff) | |
download | qemu-98494e3b926ad62c5644fd84a37f04b5e7abb7a6.zip qemu-98494e3b926ad62c5644fd84a37f04b5e7abb7a6.tar.gz qemu-98494e3b926ad62c5644fd84a37f04b5e7abb7a6.tar.bz2 |
nbd: Group all Linux-specific ioctl code in one place
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 <eblake@redhat.com>
Message-Id: <1463006384-7734-7-git-send-email-eblake@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'nbd/client.c')
-rw-r--r-- | nbd/client.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/nbd/client.c b/nbd/client.c index c08aa85..5604aa9 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) |