Re: COMPARE_AND_WRITE support for rbd driver

2019-09-20 Thread Yaowei Bai
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





Re: COMPARE_AND_WRITE support for rbd driver

2019-09-20 Thread Paolo Bonzini
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



[Qemu-block] COMPARE_AND_WRITE support for rbd driver

2019-09-18 Thread Yaowei Bai
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? I want to hear suggestions from you
genius guys. Appreciate it.