diff mbox

nvme: support NVME_VOLATILE_WRITE_CACHE feature

Message ID 20150430094417.GA18671@lst.de
State New
Headers show

Commit Message

Christoph Hellwig April 30, 2015, 9:44 a.m. UTC
The SCSI emulation in the Linux NVMe driver really wants to know
if a device has a volatile write cache.  Given that qemu has moved
away from a model where we report the backing store WCE bit to
one where the WCE bit is supposed to be part of the migratable
guest-visible state we always return 1 here.

Signed-off-by: Christoph Hellwig <hch@lst.de>

Comments

Keith Busch April 30, 2015, 2:03 p.m. UTC | #1
On Thu, 30 Apr 2015, Christoph Hellwig wrote:
> The SCSI emulation in the Linux NVMe driver really wants to know
> if a device has a volatile write cache.  Given that qemu has moved
> away from a model where we report the backing store WCE bit to
> one where the WCE bit is supposed to be part of the migratable
> guest-visible state we always return 1 here.

Thanks, this fix was long overdue and already incorporated in my tree. I
really need to get my act together for a legit pull request with all the
other 1.0, 1.1 and 1.2 features.

Acked-by: Keith Busch <keith.busch@intel.com>

> Signed-off-by: Christoph Hellwig <hch@lst.de>
>
> diff --git a/hw/block/nvme.c b/hw/block/nvme.c
> index 1e07166..50d76f1 100644
> --- a/hw/block/nvme.c
> +++ b/hw/block/nvme.c
> @@ -479,6 +479,9 @@ static uint16_t nvme_get_feature(NvmeCtrl *n, NvmeCmd *cmd, NvmeRequest *req)
>         req->cqe.result =
>             cpu_to_le32((n->num_queues - 1) | ((n->num_queues - 1) << 16));
>         break;
> +    case NVME_VOLATILE_WRITE_CACHE:
> +        req->cqe.result = cpu_to_le32(1);
> +        break;
>     default:
>         return NVME_INVALID_FIELD | NVME_DNR;
>     }
>
Kevin Wolf May 7, 2015, 1:51 p.m. UTC | #2
[ Cc: qemu-block ]

Am 30.04.2015 um 16:03 hat Keith Busch geschrieben:
> On Thu, 30 Apr 2015, Christoph Hellwig wrote:
> >The SCSI emulation in the Linux NVMe driver really wants to know
> >if a device has a volatile write cache.  Given that qemu has moved
> >away from a model where we report the backing store WCE bit to
> >one where the WCE bit is supposed to be part of the migratable
> >guest-visible state we always return 1 here.
> 
> Thanks, this fix was long overdue and already incorporated in my tree. I
> really need to get my act together for a legit pull request with all the
> other 1.0, 1.1 and 1.2 features.
> 
> Acked-by: Keith Busch <keith.busch@intel.com>

Thanks, applied to the block branch.

Kevin
diff mbox

Patch

diff --git a/hw/block/nvme.c b/hw/block/nvme.c
index 1e07166..50d76f1 100644
--- a/hw/block/nvme.c
+++ b/hw/block/nvme.c
@@ -479,6 +479,9 @@  static uint16_t nvme_get_feature(NvmeCtrl *n, NvmeCmd *cmd, NvmeRequest *req)
         req->cqe.result =
             cpu_to_le32((n->num_queues - 1) | ((n->num_queues - 1) << 16));
         break;
+    case NVME_VOLATILE_WRITE_CACHE:
+        req->cqe.result = cpu_to_le32(1);
+        break;
     default:
         return NVME_INVALID_FIELD | NVME_DNR;
     }