@@ -5402,12 +5402,14 @@ bool bdrv_is_first_non_filter(BlockDriverState *candidate)
QTAILQ_FOREACH(bs, &bdrv_states, device_list) {
bool perm;
- if (!bs->file) {
- continue;
+ if (bs->file &&
+ bs->file->drv &&
+ bs->file->drv->authorizations[BS_IS_A_FILTER]) {
+ perm = bdrv_recurse_is_first_non_filter(bs->file, candidate);
+ } else {
+ perm = bdrv_recurse_is_first_non_filter(bs, candidate);
}
- perm = bdrv_recurse_is_first_non_filter(bs->file, candidate);
-
/* candidate is the first non filter */
if (perm) {
return true;
Take into account the fact that a block filter like quorum will be in bs->file while a regular block driver device is really on the top level. Signed-off-by: Benoit Canet <benoit@irqsave.net> --- block.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)