raw-format.c (0d514fa23402ab7b4f1c965e0631d953bbe4d3b7) raw-format.c (061ca8a368165fae300748c17971824a089f521f)
1/* BlockDriver implementation for "raw" format driver
2 *
3 * Copyright (C) 2010-2016 Red Hat, Inc.
4 * Copyright (C) 2010, Blue Swirl <blauwirbel@gmail.com>
5 * Copyright (C) 2009, Anthony Liguori <aliguori@us.ibm.com>
6 *
7 * Author:
8 * Laszlo Ersek <lersek@redhat.com>

--- 352 unchanged lines hidden (view full) ---

361 if (bs->probed) {
362 /* To make it easier to protect the first sector, any probed
363 * image is restricted to read-modify-write on sub-sector
364 * operations. */
365 bs->bl.request_alignment = BDRV_SECTOR_SIZE;
366 }
367}
368
1/* BlockDriver implementation for "raw" format driver
2 *
3 * Copyright (C) 2010-2016 Red Hat, Inc.
4 * Copyright (C) 2010, Blue Swirl <blauwirbel@gmail.com>
5 * Copyright (C) 2009, Anthony Liguori <aliguori@us.ibm.com>
6 *
7 * Author:
8 * Laszlo Ersek <lersek@redhat.com>

--- 352 unchanged lines hidden (view full) ---

361 if (bs->probed) {
362 /* To make it easier to protect the first sector, any probed
363 * image is restricted to read-modify-write on sub-sector
364 * operations. */
365 bs->bl.request_alignment = BDRV_SECTOR_SIZE;
366 }
367}
368
369static int raw_truncate(BlockDriverState *bs, int64_t offset,
370 PreallocMode prealloc, Error **errp)
369static int coroutine_fn raw_co_truncate(BlockDriverState *bs, int64_t offset,
370 PreallocMode prealloc, Error **errp)
371{
372 BDRVRawState *s = bs->opaque;
373
374 if (s->has_size) {
375 error_setg(errp, "Cannot resize fixed-size raw disks");
376 return -ENOTSUP;
377 }
378
379 if (INT64_MAX - offset < s->offset) {
380 error_setg(errp, "Disk size too large for the chosen offset");
381 return -EINVAL;
382 }
383
384 s->size = offset;
385 offset += s->offset;
371{
372 BDRVRawState *s = bs->opaque;
373
374 if (s->has_size) {
375 error_setg(errp, "Cannot resize fixed-size raw disks");
376 return -ENOTSUP;
377 }
378
379 if (INT64_MAX - offset < s->offset) {
380 error_setg(errp, "Disk size too large for the chosen offset");
381 return -EINVAL;
382 }
383
384 s->size = offset;
385 offset += s->offset;
386 return bdrv_truncate(bs->file, offset, prealloc, errp);
386 return bdrv_co_truncate(bs->file, offset, prealloc, errp);
387}
388
389static void raw_eject(BlockDriverState *bs, bool eject_flag)
390{
391 bdrv_eject(bs->file->bs, eject_flag);
392}
393
394static void raw_lock_medium(BlockDriverState *bs, bool locked)

--- 145 unchanged lines hidden (view full) ---

540 .bdrv_co_create_opts = &raw_co_create_opts,
541 .bdrv_co_preadv = &raw_co_preadv,
542 .bdrv_co_pwritev = &raw_co_pwritev,
543 .bdrv_co_pwrite_zeroes = &raw_co_pwrite_zeroes,
544 .bdrv_co_pdiscard = &raw_co_pdiscard,
545 .bdrv_co_block_status = &raw_co_block_status,
546 .bdrv_co_copy_range_from = &raw_co_copy_range_from,
547 .bdrv_co_copy_range_to = &raw_co_copy_range_to,
387}
388
389static void raw_eject(BlockDriverState *bs, bool eject_flag)
390{
391 bdrv_eject(bs->file->bs, eject_flag);
392}
393
394static void raw_lock_medium(BlockDriverState *bs, bool locked)

--- 145 unchanged lines hidden (view full) ---

540 .bdrv_co_create_opts = &raw_co_create_opts,
541 .bdrv_co_preadv = &raw_co_preadv,
542 .bdrv_co_pwritev = &raw_co_pwritev,
543 .bdrv_co_pwrite_zeroes = &raw_co_pwrite_zeroes,
544 .bdrv_co_pdiscard = &raw_co_pdiscard,
545 .bdrv_co_block_status = &raw_co_block_status,
546 .bdrv_co_copy_range_from = &raw_co_copy_range_from,
547 .bdrv_co_copy_range_to = &raw_co_copy_range_to,
548 .bdrv_truncate = &raw_truncate,
548 .bdrv_co_truncate = &raw_co_truncate,
549 .bdrv_getlength = &raw_getlength,
550 .has_variable_length = true,
551 .bdrv_measure = &raw_measure,
552 .bdrv_get_info = &raw_get_info,
553 .bdrv_refresh_limits = &raw_refresh_limits,
554 .bdrv_probe_blocksizes = &raw_probe_blocksizes,
555 .bdrv_probe_geometry = &raw_probe_geometry,
556 .bdrv_eject = &raw_eject,

--- 12 unchanged lines hidden ---
549 .bdrv_getlength = &raw_getlength,
550 .has_variable_length = true,
551 .bdrv_measure = &raw_measure,
552 .bdrv_get_info = &raw_get_info,
553 .bdrv_refresh_limits = &raw_refresh_limits,
554 .bdrv_probe_blocksizes = &raw_probe_blocksizes,
555 .bdrv_probe_geometry = &raw_probe_geometry,
556 .bdrv_eject = &raw_eject,

--- 12 unchanged lines hidden ---