diff mbox

block: Fix device snapshots broken by the block filter snapshots patchset.

Message ID 1392063935-12263-1-git-send-email-benoit.canet@irqsave.net
State New
Headers show

Commit Message

BenoƮt Canet Feb. 10, 2014, 8:25 p.m. UTC
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(-)
diff mbox

Patch

diff --git a/block.c b/block.c
index 07ac50a..6ace45c 100644
--- a/block.c
+++ b/block.c
@@ -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;