Message ID | 20190904210100.10501-1-dmitry.fomichev@wdc.com (mailing list archive) |
---|---|
Headers | show |
Series | virtio/block: handle zoned backing devices | expand |
On Wed, Sep 04, 2019 at 05:00:56PM -0400, Dmitry Fomichev wrote: > Currently, attaching zoned block devices (i.e., storage devices > compliant to ZAC/ZBC standards) using several virtio methods doesn't > work properly as zoned devices appear as regular block devices at the > guest. This may cause unexpected i/o errors and, potentially, some > data corruption. > > To be more precise, attaching a zoned device via virtio-pci-blk, > virtio-scsi-pci/scsi-disk or virtio-scsi-pci/scsi-hd demonstrates the > above behavior. The virtio-scsi-pci/scsi-block method works with a > recent patch. The virtio-scsi-pci/scsi-generic method also appears to > handle zoned devices without problems. > > This patch set adds code to check if the backing device that is being > opened is a zoned Host Managed device. If this is the case, the patch > prohibits attaching such device for all use cases lacking proper > zoned support. > > Host Aware zoned block devices are designed to work as regular block > devices at a guest system that does not support ZBD. Therefore, this > patch set doesn't prohibit attachment of Host Aware devices. > > Considering that there is still a couple of different working ways > to attach a ZBD, this patch set provides a reasonable short-term > solution for this problem. > > ZBD support for virtio-scsi-pci/scsi-disk and virtio-scsi-pci/scsi-hd > does not seem as necessary. Users will be expected to attach zoned > block devices via virtio-scsi-pci/scsi-block instead. > > This patch set contains some Linux-specific code. This code is > necessary to obtain Zoned Block Device model value from Linux sysfs. > > History: > > v1 -> v2: > - rework code to be permission-based > - always allow Host Aware devices to be attached > - add fix for Host Aware attachments aka RCAP output snoop > > v2 -> v3: > - drop the patch for RCAP output snoop - merged separately > > v3 -> v4: > - rebase to the current code > > v4 -> v5: > - avoid checkpatch warning > > v5 -> v6: > - address review comments from Stefan Hajnoczi > > Dmitry Fomichev (4): > block: Add zoned device model property > raw: Recognize zoned backing devices > block/ide/scsi: Set BLK_PERM_SUPPORT_HM_ZONED > raw: Don't open ZBDs if backend can't handle them > > block.c | 15 +++++++ > block/file-posix.c | 89 +++++++++++++++++++++++++++++++++------ > block/io.c | 5 +++ > hw/block/block.c | 8 +++- > hw/block/fdc.c | 5 ++- > hw/block/nvme.c | 2 +- > hw/block/virtio-blk.c | 2 +- > hw/block/xen-block.c | 2 +- > hw/ide/qdev.c | 2 +- > hw/scsi/scsi-disk.c | 13 +++--- > hw/scsi/scsi-generic.c | 2 +- > hw/usb/dev-storage.c | 2 +- > include/block/block.h | 19 ++++++++- > include/block/block_int.h | 3 ++ > include/hw/block/block.h | 3 +- > 15 files changed, 141 insertions(+), 31 deletions(-) > > -- > 2.21.0 > Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>