parallels: dirty BAT properly for continuous allocations
authorVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Tue, 17 Nov 2015 17:02:58 +0000 (20:02 +0300)
committerStefan Hajnoczi <stefanha@redhat.com>
Tue, 24 Nov 2015 01:25:36 +0000 (09:25 +0800)
This patch marks part of the BAT dirty properly. There is a possibility that
multy-block allocation could have one block allocated on one BAT page and
next block on the next page. The code without the patch could not save
updated position to the file.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
Message-id: 1447779778-26062-1-git-send-email-den@openvz.org
CC: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
block/parallels.c

index 4f79293826bde847366588f2c66bd59276c5a52b..f689fdeaffcc14f3788906ee9f6106660ad6b78c 100644 (file)
@@ -220,7 +220,7 @@ static int64_t allocate_clusters(BlockDriverState *bs, int64_t sector_num,
         s->bat_bitmap[idx + i] = cpu_to_le32(s->data_end / s->off_multiplier);
         s->data_end += s->tracks;
         bitmap_set(s->bat_dirty_bmap,
-                   bat_entry_off(idx) / s->bat_dirty_block, 1);
+                   bat_entry_off(idx + i) / s->bat_dirty_block, 1);
     }
 
     return bat2sect(s, idx) + sector_num % s->tracks;