Patchwork [scsi-ish] raw-posix: fix bdrv_aio_ioctl

login
register
mail settings
Submitter Paolo Bonzini
Date Jan. 10, 2013, 2:28 p.m.
Message ID <1357828115-574-1-git-send-email-pbonzini@redhat.com>
Download mbox | patch
Permalink /patch/211012/
State New
Headers show

Comments

Paolo Bonzini - Jan. 10, 2013, 2:28 p.m.
When the raw-posix aio=thread code was moved from posix-aio-compat.c
to block/raw-posix.c, there was an unintended change to the ioctl code.
The code used to return the ioctl command, which posix_aio_read()
would later morph into a zero.  This hack is not necessary anymore,
and in fact breaks scsi-generic (which expects a zero return code).
Remove it.

Cc: qemu-stable@nongnu.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
        Kevin, if you prefer I can send this through the SCSI tree.

 block/raw-posix.c | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)
Kevin Wolf - Jan. 11, 2013, 12:26 p.m.
Am 10.01.2013 15:28, schrieb Paolo Bonzini:
> When the raw-posix aio=thread code was moved from posix-aio-compat.c
> to block/raw-posix.c, there was an unintended change to the ioctl code.
> The code used to return the ioctl command, which posix_aio_read()
> would later morph into a zero.  This hack is not necessary anymore,
> and in fact breaks scsi-generic (which expects a zero return code).
> Remove it.
> 
> Cc: qemu-stable@nongnu.org
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

Thanks, applied to the block branch.

Kevin

Patch

diff --git a/block/raw-posix.c b/block/raw-posix.c
index 87d888e..0e705ba 100644
--- a/block/raw-posix.c
+++ b/block/raw-posix.c
@@ -455,15 +455,7 @@  static ssize_t handle_aiocb_ioctl(RawPosixAIOData *aiocb)
         return -errno;
     }
 
-    /*
-     * This looks weird, but the aio code only considers a request
-     * successful if it has written the full number of bytes.
-     *
-     * Now we overload aio_nbytes as aio_ioctl_cmd for the ioctl command,
-     * so in fact we return the ioctl command here to make posix_aio_read()
-     * happy..
-     */
-    return aiocb->aio_nbytes;
+    return 0;
 }
 
 static ssize_t handle_aiocb_flush(RawPosixAIOData *aiocb)