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>
This commit is contained in:
parent
ab7c548e26
commit
98494e3b92
13
nbd/client.c
13
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)
|
||||
|
18
nbd/server.c
18
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];
|
||||
|
Loading…
Reference in New Issue
Block a user