]>
Commit | Line | Data |
---|---|---|
6fb04df7 | 1 | From b60a9ba781fc9e4f1a8c7d177f20933340cf4fc4 Mon Sep 17 00:00:00 2001 |
ca0fe5f5 WB |
2 | From: Dietmar Maurer <dietmar@proxmox.com> |
3 | Date: Tue, 26 Mar 2013 06:21:16 +0100 | |
6fb04df7 | 4 | Subject: [PATCH 14/55] vma restore: tolerate a size difference up to 4M |
ca0fe5f5 WB |
5 | |
6 | Signed-off-by: Dietmar Maurer <dietmar@proxmox.com> | |
7 | --- | |
8 | vma-reader.c | 8 +++++++- | |
9 | 1 file changed, 7 insertions(+), 1 deletion(-) | |
10 | ||
11 | diff --git a/vma-reader.c b/vma-reader.c | |
12 | index 9d92c6a..d9f43fe 100644 | |
13 | --- a/vma-reader.c | |
14 | +++ b/vma-reader.c | |
15 | @@ -465,7 +465,13 @@ int vma_reader_register_bs(VmaReader *vmar, guint8 dev_id, BlockDriverState *bs, | |
16 | assert(vmar->rstate[dev_id].bs == NULL); | |
17 | ||
18 | int64_t size = bdrv_getlength(bs); | |
19 | - if (size != vmar->devinfo[dev_id].size) { | |
20 | + int64_t size_diff = size - vmar->devinfo[dev_id].size; | |
21 | + | |
22 | + /* storage types can have different size restrictions, so it | |
23 | + * is not always possible to create an image with exact size. | |
24 | + * So we tolerate a size difference up to 4MB. | |
25 | + */ | |
26 | + if ((size_diff < 0) || (size_diff > 4*1024*1024)) { | |
27 | error_setg(errp, "vma_reader_register_bs for stream %s failed - " | |
28 | "unexpected size %zd != %zd", vmar->devinfo[dev_id].devname, | |
29 | size, vmar->devinfo[dev_id].size); | |
30 | -- | |
31 | 2.1.4 | |
32 |