block/qcow2-bitmap: Don't check size for IN_USE bitmap
We are going to allow image resize when there are persistent bitmaps. It may lead to appearing of inconsistent bitmaps (IN_USE=1) with inconsistent size. But we still want to load them as inconsistent. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Message-id: 20190311185147.52309-3-vsementsov@virtuozzo.com Signed-off-by: John Snow <jsnow@redhat.com>
This commit is contained in:
parent
2fd490c614
commit
bf5f0cf5d8
@ -462,10 +462,25 @@ static int check_dir_entry(BlockDriverState *bs, Qcow2BitmapDirEntry *entry)
|
||||
return len;
|
||||
}
|
||||
|
||||
fail = (phys_bitmap_bytes > BME_MAX_PHYS_SIZE) ||
|
||||
(len > ((phys_bitmap_bytes * 8) << entry->granularity_bits));
|
||||
if (phys_bitmap_bytes > BME_MAX_PHYS_SIZE) {
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return fail ? -EINVAL : 0;
|
||||
if (!(entry->flags & BME_FLAG_IN_USE) &&
|
||||
(len > ((phys_bitmap_bytes * 8) << entry->granularity_bits)))
|
||||
{
|
||||
/*
|
||||
* We've loaded a valid bitmap (IN_USE not set) or we are going to
|
||||
* store a valid bitmap, but the allocated bitmap table size is not
|
||||
* enough to store this bitmap.
|
||||
*
|
||||
* Note, that it's OK to have an invalid bitmap with invalid size due
|
||||
* to a bitmap that was not correctly saved after image resize.
|
||||
*/
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void bitmap_directory_to_be(uint8_t *dir, size_t size)
|
||||
|
Loading…
x
Reference in New Issue
Block a user