[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 1/3] Update ioctl order in nbd_init() to detect E
From: |
Chunyan Liu |
Subject: |
[Qemu-devel] [PATCH v4 1/3] Update ioctl order in nbd_init() to detect EBUSY |
Date: |
Fri, 2 Dec 2011 23:27:54 +0800 |
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>
---
nbd.c | 27 +++++++++------------------
1 files changed, 9 insertions(+), 18 deletions(-)
diff --git a/nbd.c b/nbd.c
index e6c931c..4184614 100644
--- a/nbd.c
+++ b/nbd.c
@@ -348,6 +348,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) {
@@ -386,24 +395,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.3.4
- [Qemu-devel] [PATCH v4 1/3] Update ioctl order in nbd_init() to detect EBUSY,
Chunyan Liu <=
- [Qemu-devel] [PATCH v4 2/3] Extract code to nbd_setup function to be used for many purposes, Chunyan Liu, 2011/12/02
- Re: [Qemu-devel] [PATCH v4 2/3] Extract code to nbd_setup function to be used for many purposes, Paolo Bonzini, 2011/12/02
- Re: [Qemu-devel] [PATCH v4 2/3] Extract code to nbd_setup function to be used for many purposes, Chunyan Liu, 2011/12/05
- Re: [Qemu-devel] [PATCH v4 2/3] Extract code to nbd_setup function to be used for many purposes, Stefan Hajnoczi, 2011/12/05
- Re: [Qemu-devel] [PATCH v4 2/3] Extract code to nbd_setup function to be used for many purposes, Chunyan Liu, 2011/12/06
- Re: [Qemu-devel] [PATCH v4 2/3] Extract code to nbd_setup function to be used for many purposes, Paolo Bonzini, 2011/12/06
- Re: [Qemu-devel] [PATCH v4 2/3] Extract code to nbd_setup function to be used for many purposes, Chunyan Liu, 2011/12/06
- Re: [Qemu-devel] [PATCH v4 2/3] Extract code to nbd_setup function to be used for many purposes, Paolo Bonzini, 2011/12/06
- Re: [Qemu-devel] [PATCH v4 2/3] Extract code to nbd_setup function to be used for many purposes, Chunyan Liu, 2011/12/06
- Re: [Qemu-devel] [PATCH v4 2/3] Extract code to nbd_setup function to be used for many purposes, Chunyan Liu, 2011/12/06