From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54644) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XVQ1B-000602-MU for qemu-devel@nongnu.org; Sat, 20 Sep 2014 15:08:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XVQ15-0003Qr-8S for qemu-devel@nongnu.org; Sat, 20 Sep 2014 15:08:25 -0400 Received: from mx1.redhat.com ([209.132.183.28]:63053) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XVQ14-0003O2-Vq for qemu-devel@nongnu.org; Sat, 20 Sep 2014 15:08:19 -0400 Message-ID: <541DD096.8090503@redhat.com> Date: Sat, 20 Sep 2014 21:08:06 +0200 From: Max Reitz MIME-Version: 1.0 References: <1410891148-28849-1-git-send-email-armbru@redhat.com> <1410891148-28849-4-git-send-email-armbru@redhat.com> In-Reply-To: <1410891148-28849-4-git-send-email-armbru@redhat.com> Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v3 03/23] block: Connect BlockBackend to BlockDriverState List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Markus Armbruster , qemu-devel@nongnu.org Cc: kwolf@redhat.com, famz@redhat.com, benoit.canet@nodalink.com, stefanha@redhat.com On 16.09.2014 20:12, Markus Armbruster wrote: > The pointer from BlockBackend to BlockDriverState is a strong > reference, managed with bdrv_ref() / bdrv_unref(), the back-pointer is > a weak one. > > Convenience function blk_new_with_bs() creates a BlockBackend with its > BlockDriverState. Callers have to unref both. The commit after next > will relieve them of the need to unref the BlockDriverState. > > Complication: due to the silly way drive_del works, we need a way to > hide a BlockBackend, just like bdrv_make_anon(). To emphasize its > "special" status, give the function a suitably off-putting name: > blk_hide_on_behalf_of_do_drive_del(). Unfortunately, hiding turns the > BlockBackend's name into the empty string. Can't avoid that without > breaking the blk->bs->device_name equals blk->name invariant. > > The patch adds a memory leak: drive_del while a device model is > connected leaks the BlockBackend. Avoiding the leak here is rather > hairy, but it'll become straightforward in a few commits, so I mark it > FIXME in the code now, and plug it when it's easy. Good. > Signed-off-by: Markus Armbruster > --- > block.c | 10 ++-- > block/block-backend.c | 71 ++++++++++++++++++++++- > blockdev.c | 21 ++++--- > hw/block/xen_disk.c | 8 +-- > include/block/block_int.h | 2 + > include/sysemu/block-backend.h | 5 ++ > qemu-img.c | 125 +++++++++++++++++++---------------------- > qemu-io.c | 4 +- > qemu-nbd.c | 4 +- > 9 files changed, 156 insertions(+), 94 deletions(-) Reviewed-by: Max Reitz