diff --git a/block.c b/block.c
index c05875f..b9da10e 100644
--- a/block.c
+++ b/block.c
@@ -532,7 +532,7 @@ static int find_image_format(const char *filename, BlockDriver **pdrv)
     }
 
     /* Return the raw BlockDriver * to scsi-generic devices or empty drives */
-    if (bs->sg || !bdrv_is_inserted(bs)) {
+    if (bs->sg || !bdrv_is_inserted(bs) || bdrv_getlength(bs) == 0) {
         bdrv_delete(bs);
         drv = bdrv_find_format("raw");
         if (!drv) {
