On Fri, Sep 20, 2019 at 01:22:02PM +0200, Paolo Bonzini wrote: > On 19/09/19 07:36, Yaowei Bai wrote: > > > > Hey guys, > > > > I noticed that COMPARE_AND_WRITE had been supported by CEPH/librbd since > > v12.1.1. And in my company, we use this COMPARE_AND_WRITE support in > > CEPH with the ISCSI protocol. More precisely, we use tgt and CEPH with this > > COMPARE_AND_WRITE support as the SCSI target and export it to the remote > > hosts. And then VMs on remote hosts can use these SCSI targets through ISCSI > > initiator support in QEMU directly or as local SCSI disks. But > > unfortunately, > > there're some issues with this tgt case. So i think maybe we could also add > > this > > COMPARE_AND_WRITE support into the rbd driver in QEMU so we can leave the > > ISCSI/tgt alone and use this COMPARE_AND_WRITE support with the > > scsi-disk <--> virtio-scsi <--> rbd driver path. This can also apply to > > the WRITESAME support in CEPH/librbd. > > > > So is it suitable for doing this? > > Yes, it would be suitable. In a nutshell you would have to add support > for COMPARE_AND_WRITE to block/io.c (calling into a new BlockDriver > function pointer), block/rbd.c and hw/scsi/scsi-disk.c.
OK, i'll try to implement this and send it out for review. Thanks Paolo. > > Paolo