From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52795) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YQo2q-0005PY-CQ for qemu-devel@nongnu.org; Wed, 25 Feb 2015 21:19:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YQo2p-000074-Al for qemu-devel@nongnu.org; Wed, 25 Feb 2015 21:19:20 -0500 Date: Thu, 26 Feb 2015 10:19:10 +0800 From: Fam Zheng Message-ID: <20150226021910.GD10137@ad.nay.redhat.com> References: <1424792164-2130-1-git-send-email-mreitz@redhat.com> <1424792164-2130-6-git-send-email-mreitz@redhat.com> <20150225075232.GH5293@ad.nay.redhat.com> <54EDD846.5030509@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <54EDD846.5030509@redhat.com> Subject: Re: [Qemu-devel] [PATCH v3 05/11] block: Move BDS close notifiers into BB List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Max Reitz Cc: Kevin Wolf , qemu-block@nongnu.org, qemu-devel@nongnu.org, Markus Armbruster , Stefan Hajnoczi , Paolo Bonzini 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