diff --git a/block-migration.c b/block-migration.c
index 7db6f02..2e02a4a 100644
--- a/block-migration.c
+++ b/block-migration.c
@@ -237,10 +237,11 @@ static void init_blk_migration_it(void *opaque, BlockDriverState *bs)
     int64_t sectors;
 
     if (!bdrv_is_read_only(bs)) {
-        sectors = bdrv_getlength(bs) >> BDRV_SECTOR_BITS;
-        if (sectors == 0) {
+        sectors = bdrv_getlength(bs) & BDRV_SECTOR_MASK;
+        if (sectors <= 0) {
             return;
         }
+        sectors >>= BDRV_SECTOR_BITS;
 
         bmds = qemu_mallocz(sizeof(BlkMigDevState));
         bmds->bs = bs;
