qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] scsi-disk: provide "max write same length" for


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH] scsi-disk: provide "max write same length" for block limits VPD page
Date: Fri, 05 Dec 2014 16:51:01 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0


On 05/12/2014 14:00, Ming Lei wrote:
> Since QEMU claims to support UNMAP, WRITE SAME and WRITE SAME 16
> in the LBP VPD page, it is better to provide "max write same length"
> in response for block limits VPD page because:
> 
>       - T10 SBC-3 doesn't describe priority explicitly when all three
>       are enabled
>       - host driver may prefer WRITE/WRITE 16, then try to parse
>       "max write same length"
> 
> Signed-off-by: Ming Lei <address@hidden>
> ---
>  hw/scsi/scsi-disk.c |   14 ++++++++++++++
>  1 file changed, 14 insertions(+)
> 
> diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c
> index 2f75d7d..b15bf4f 100644
> --- a/hw/scsi/scsi-disk.c
> +++ b/hw/scsi/scsi-disk.c
> @@ -674,6 +674,20 @@ static int scsi_disk_emulate_inquiry(SCSIRequest *req, 
> uint8_t *outbuf)
>              outbuf[29] = (unmap_sectors >> 16) & 0xff;
>              outbuf[30] = (unmap_sectors >> 8) & 0xff;
>              outbuf[31] = unmap_sectors & 0xff;
> +
> +            /*
> +             * maximum write same length, just borrow max unmap
> +             * count because write same command need to support
> +             * unmap
> +             */
> +            outbuf[36] = 0;
> +            outbuf[37] = 0;
> +            outbuf[38] = 0;
> +            outbuf[39] = 0;
> +            outbuf[40] = (max_unmap_sectors >> 24) & 0xff;
> +            outbuf[41] = (max_unmap_sectors >> 16) & 0xff;
> +            outbuf[42] = (max_unmap_sectors >> 8) & 0xff;
> +            outbuf[43] = max_unmap_sectors & 0xff;
>              break;
>          }
>          case 0xb2: /* thin provisioning */
> 

There is support for splitting write_zeroes requests in the block layer,
so this is a problem elsewhere in the stack.  It could be in QEMU block/
or in Linux.  Let's analyze it in the linux-scsi thread.

Paolo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]