On 19/09/19 07:36, Yaowei Bai wrote: > baiyao...@cmss.chinamobile.com > Bcc: > Subject: COMPARE_AND_WRITE support for rbd driver > Reply-To: baiyao...@cmss.chinamobile.com > > 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. Paolo