qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-block] [Qemu-devel] [PATCH v3 05/11] block: Move BDS close not


From: Max Reitz
Subject: Re: [Qemu-block] [Qemu-devel] [PATCH v3 05/11] block: Move BDS close notifiers into BB
Date: Thu, 26 Feb 2015 08:59:57 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0

On 2015-02-25 at 21:19, Fam Zheng wrote:
On Wed, 02/25 09:12, Max Reitz wrote:
Because I need a Notifier pointer to give to
blk_add_{insert,remove}_bs_notifier(), and most importantly because the only
"opaque" object the callbacks will receive is that Notifier pointer (which
in this case is actually a DataPlaneBlkChangeNotifier pointer). I cannot
influence the @data parameter, and I cannot (easily) identify the
VirtIOBlockDataPlane object from the BlockBackend (which is @data) alone.
Probably like this:

     struct VirtIOBlockDataPlane {
         ...
         Notifier insert_notifier, remove_notifier;
         ...
     };

     static void data_plane_blk_insert_notifier(Notifier *n, void *data)
     {
         VirtIOBlockDataPlane *s = container_of(n, VirtIOBlockDataPlane, 
insert_notifier);
         assert(s->conf->conf.blk == data);
         data_plane_set_up_op_blockers(s);
     }

     void virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *conf,
                                       VirtIOBlockDataPlane **dataplane,
     {
         ...
         s->insert_notifier.notify = data_plane_blk_insert_notifier;
         blk_add_insert_bs_notifier(conf->conf.blk, &s->insert_notifier);
         ...
     }

?

Oh, right, thanks!

Won't virtio_scsi_hotunplug() (which frees s->{insert,remove}_notifier) be
called before a second device is plugged?

No, multiple SCSIDevice objects (scsi-disk, scsi-generic, etc...) can be
attached to the same virtio-scsi bus.

You're right, I'll see to it.

Thanks,

Max



reply via email to

[Prev in Thread] Current Thread [Next in Thread]