From: Benoît Canet <ben...@irqsave.net> Signed-off-by: Benoit Canet <ben...@irqsave.net> Reviewed-by: Max Reitz <mre...@redhat.com> --- block/quorum.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
diff --git a/block/quorum.c b/block/quorum.c index 5b77c02..a4716b3 100644 --- a/block/quorum.c +++ b/block/quorum.c @@ -703,6 +703,23 @@ static coroutine_fn int quorum_co_flush(BlockDriverState *bs) return result; } +static bool quorum_recurse_is_first_non_filter(BlockDriverState *bs, + BlockDriverState *candidate) +{ + BDRVQuorumState *s = bs->opaque; + int i; + + for (i = 0; i < s->total; i++) { + bool perm = bdrv_recurse_is_first_non_filter(s->bs[i], + candidate); + if (perm) { + return true; + } + } + + return false; +} + static BlockDriver bdrv_quorum = { .format_name = "quorum", .protocol_name = "quorum", @@ -717,6 +734,8 @@ static BlockDriver bdrv_quorum = { .bdrv_aio_writev = quorum_aio_writev, .bdrv_invalidate_cache = quorum_invalidate_cache, .bdrv_co_get_block_status = quorum_co_get_block_status, + + .bdrv_recurse_is_first_non_filter = quorum_recurse_is_first_non_filter, }; static void bdrv_quorum_init(void) -- 1.8.3.2