diff --git a/block/snapshot.c b/block/snapshot.c index 85c52ff4559e9158e36380195152e5eb3a03bf2e..698e1a1d5881cd92ba6c0aae832db687e20d7fd3 100644 --- a/block/snapshot.c +++ b/block/snapshot.c @@ -236,6 +236,10 @@ int bdrv_snapshot_delete(BlockDriverState *bs, error_setg(errp, "snapshot_id and name are both NULL"); return -EINVAL; } + + /* drain all pending i/o before deleting snapshot */ + bdrv_drain_all(); + if (drv->bdrv_snapshot_delete) { return drv->bdrv_snapshot_delete(bs, snapshot_id, name, errp); }