qemu-devel
[Top][All Lists]
Advanced

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

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


From: Fam Zheng
Subject: Re: [Qemu-devel] [PATCH v3 05/11] block: Move BDS close notifiers into BB
Date: Thu, 26 Feb 2015 10:19:10 +0800
User-agent: Mutt/1.5.23 (2014-03-12)

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);
        ...
    }

?

> 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.

Fam



reply via email to

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