[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 10/25] Update ioctl order in nbd_init() to detect EB
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH 10/25] Update ioctl order in nbd_init() to detect EBUSY |
Date: |
Tue, 6 Dec 2011 16:27:37 +0100 |
From: Chunyan Liu <address@hidden>
Update ioctl(s) in nbd_init() to detect device busy early.
Current nbd_init() issues NBD_CLEAR_SOCKET before NBD_SET_SOCKET, if issuing
"qemu-nbd -c /dev/nbd0 disk.img" twice, the second time won't detect EBUSY in
nbd_init(), but in nbd_client will report EBUSY and do clear socket (the 1st
time command will be affacted too because of no socket any more.)
No change to previous version.
Signed-off-by: Chunyan Liu <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
nbd.c | 27 +++++++++------------------
1 files changed, 9 insertions(+), 18 deletions(-)
diff --git a/nbd.c b/nbd.c
index d3bf2d1..06064c2 100644
--- a/nbd.c
+++ b/nbd.c
@@ -358,6 +358,15 @@ int nbd_receive_negotiate(int csock, const char *name,
uint32_t *flags,
#ifdef __linux__
int nbd_init(int fd, int csock, uint32_t flags, off_t size, size_t blocksize)
{
+ TRACE("Setting NBD socket");
+
+ if (ioctl(fd, NBD_SET_SOCK, csock) == -1) {
+ int serrno = errno;
+ LOG("Failed to set NBD socket");
+ errno = serrno;
+ return -1;
+ }
+
TRACE("Setting block size to %lu", (unsigned long)blocksize);
if (ioctl(fd, NBD_SET_BLKSIZE, blocksize) == -1) {
@@ -396,24 +405,6 @@ int nbd_init(int fd, int csock, uint32_t flags, off_t
size, size_t blocksize)
return -1;
}
- TRACE("Clearing NBD socket");
-
- if (ioctl(fd, NBD_CLEAR_SOCK) == -1) {
- int serrno = errno;
- LOG("Failed clearing NBD socket");
- errno = serrno;
- return -1;
- }
-
- TRACE("Setting NBD socket");
-
- if (ioctl(fd, NBD_SET_SOCK, csock) == -1) {
- int serrno = errno;
- LOG("Failed to set NBD socket");
- errno = serrno;
- return -1;
- }
-
TRACE("Negotiation ended");
return 0;
--
1.7.7.1
- [Qemu-devel] [PATCH 01/25] add qemu_send_full and qemu_recv_full, (continued)
- [Qemu-devel] [PATCH 01/25] add qemu_send_full and qemu_recv_full, Paolo Bonzini, 2011/12/06
- [Qemu-devel] [PATCH 03/25] nbd: switch to asynchronous operation, Paolo Bonzini, 2011/12/06
- [Qemu-devel] [PATCH 05/25] nbd: allow multiple in-flight requests, Paolo Bonzini, 2011/12/06
- [Qemu-devel] [PATCH 04/25] nbd: split requests, Paolo Bonzini, 2011/12/06
- [Qemu-devel] [PATCH 02/25] sheepdog: move coroutine send/recv function to generic code, Paolo Bonzini, 2011/12/06
- [Qemu-devel] [PATCH 06/25] nbd: fix error handling in the server, Paolo Bonzini, 2011/12/06
- [Qemu-devel] [PATCH 08/25] nbd: add support for NBD_CMD_FLUSH, Paolo Bonzini, 2011/12/06
- [Qemu-devel] [PATCH 07/25] nbd: add support for NBD_CMD_FLAG_FUA, Paolo Bonzini, 2011/12/06
- [Qemu-devel] [PATCH 09/25] nbd: add support for NBD_CMD_TRIM, Paolo Bonzini, 2011/12/06
- [Qemu-devel] [PATCH 11/25] qemu-nbd: remove offset argument to nbd_trip, Paolo Bonzini, 2011/12/06
- [Qemu-devel] [PATCH 10/25] Update ioctl order in nbd_init() to detect EBUSY,
Paolo Bonzini <=
- [Qemu-devel] [PATCH 16/25] qemu-nbd: more robust handling of invalid requests, Paolo Bonzini, 2011/12/06
- [Qemu-devel] [PATCH 14/25] qemu-nbd: simplify nbd_trip, Paolo Bonzini, 2011/12/06
- [Qemu-devel] [PATCH 12/25] qemu-nbd: remove data_size argument to nbd_trip, Paolo Bonzini, 2011/12/06
- [Qemu-devel] [PATCH 15/25] qemu-nbd: introduce nbd_do_send_reply, Paolo Bonzini, 2011/12/06
- [Qemu-devel] [PATCH 25/25] qemu-nbd: throttle requests, Paolo Bonzini, 2011/12/06
- [Qemu-devel] [PATCH 23/25] qemu-nbd: add client pointer to NBDRequest, Paolo Bonzini, 2011/12/06
- [Qemu-devel] [PATCH 24/25] qemu-nbd: asynchronous operation, Paolo Bonzini, 2011/12/06
- [Qemu-devel] [PATCH 20/25] link the main loop and its dependencies into the tools, Paolo Bonzini, 2011/12/06
- [Qemu-devel] [PATCH 19/25] qemu-nbd: introduce NBDRequest, Paolo Bonzini, 2011/12/06
- [Qemu-devel] [PATCH 18/25] qemu-nbd: introduce NBDExport, Paolo Bonzini, 2011/12/06