From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53842) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZHF9U-0004j0-Ei for qemu-devel@nongnu.org; Mon, 20 Jul 2015 13:47:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZHF9P-0000qa-GG for qemu-devel@nongnu.org; Mon, 20 Jul 2015 13:46:56 -0400 From: Max Reitz Date: Mon, 20 Jul 2015 19:45:34 +0200 Message-Id: <1437414365-11881-8-git-send-email-mreitz@redhat.com> In-Reply-To: <1437414365-11881-1-git-send-email-mreitz@redhat.com> References: <1437414365-11881-1-git-send-email-mreitz@redhat.com> Subject: [Qemu-devel] [PATCH v4 07/38] block/quorum: Implement bdrv_is_inserted() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-block@nongnu.org Cc: Kevin Wolf , Alberto Garcia , John Snow , qemu-devel@nongnu.org, Markus Armbruster , Stefan Hajnoczi , Max Reitz bdrv_is_inserted() should be invoked recursively on the children of quorum. Signed-off-by: Max Reitz Reviewed-by: Eric Blake Reviewed-by: Alberto Garcia --- block/quorum.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/block/quorum.c b/block/quorum.c index 4e66221..b7a4c09 100644 --- a/block/quorum.c +++ b/block/quorum.c @@ -1034,6 +1034,20 @@ static void quorum_refresh_filename(BlockDriverState *bs) bs->full_open_options = opts; } +static bool quorum_is_inserted(BlockDriverState *bs) +{ + BDRVQuorumState *s = bs->opaque; + int i; + + for (i = 0; i < s->num_children; i++) { + if (!bdrv_is_inserted(s->bs[i])) { + return false; + } + } + + return true; +} + static BlockDriver bdrv_quorum = { .format_name = "quorum", .protocol_name = "quorum", @@ -1057,6 +1071,8 @@ static BlockDriver bdrv_quorum = { .is_filter = true, .bdrv_recurse_is_first_non_filter = quorum_recurse_is_first_non_filter, + + .bdrv_is_inserted = quorum_is_inserted, }; static void bdrv_quorum_init(void) -- 2.4.6