Revision 77a5a000

b/block/qed.c
1333 1333

  
1334 1334
static int bdrv_qed_truncate(BlockDriverState *bs, int64_t offset)
1335 1335
{
1336
    return -ENOTSUP;
1336
    BDRVQEDState *s = bs->opaque;
1337
    uint64_t old_image_size;
1338
    int ret;
1339

  
1340
    if (!qed_is_image_size_valid(offset, s->header.cluster_size,
1341
                                 s->header.table_size)) {
1342
        return -EINVAL;
1343
    }
1344

  
1345
    /* Shrinking is currently not supported */
1346
    if ((uint64_t)offset < s->header.image_size) {
1347
        return -ENOTSUP;
1348
    }
1349

  
1350
    old_image_size = s->header.image_size;
1351
    s->header.image_size = offset;
1352
    ret = qed_write_header_sync(s);
1353
    if (ret < 0) {
1354
        s->header.image_size = old_image_size;
1355
    }
1356
    return ret;
1337 1357
}
1338 1358

  
1339 1359
static int64_t bdrv_qed_getlength(BlockDriverState *bs)

Also available in: Unified diff