crypto.c (e6af90f3fb7b87f18f46f6588fbf3e781d6f4ef6) | crypto.c (061ca8a368165fae300748c17971824a089f521f) |
---|---|
1/* 2 * QEMU block full disk encryption 3 * 4 * Copyright (c) 2015-2016 Red Hat, Inc. 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either --- 343 unchanged lines hidden (view full) --- 352 353 ret = 0; 354 cleanup: 355 qcrypto_block_free(crypto); 356 blk_unref(blk); 357 return ret; 358} 359 | 1/* 2 * QEMU block full disk encryption 3 * 4 * Copyright (c) 2015-2016 Red Hat, Inc. 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either --- 343 unchanged lines hidden (view full) --- 352 353 ret = 0; 354 cleanup: 355 qcrypto_block_free(crypto); 356 blk_unref(blk); 357 return ret; 358} 359 |
360static int block_crypto_truncate(BlockDriverState *bs, int64_t offset, 361 PreallocMode prealloc, Error **errp) | 360static int coroutine_fn 361block_crypto_co_truncate(BlockDriverState *bs, int64_t offset, 362 PreallocMode prealloc, Error **errp) |
362{ 363 BlockCrypto *crypto = bs->opaque; 364 uint64_t payload_offset = 365 qcrypto_block_get_payload_offset(crypto->block); 366 367 if (payload_offset > INT64_MAX - offset) { 368 error_setg(errp, "The requested file size is too large"); 369 return -EFBIG; 370 } 371 372 offset += payload_offset; 373 | 363{ 364 BlockCrypto *crypto = bs->opaque; 365 uint64_t payload_offset = 366 qcrypto_block_get_payload_offset(crypto->block); 367 368 if (payload_offset > INT64_MAX - offset) { 369 error_setg(errp, "The requested file size is too large"); 370 return -EFBIG; 371 } 372 373 offset += payload_offset; 374 |
374 return bdrv_truncate(bs->file, offset, prealloc, errp); | 375 return bdrv_co_truncate(bs->file, offset, prealloc, errp); |
375} 376 377static void block_crypto_close(BlockDriverState *bs) 378{ 379 BlockCrypto *crypto = bs->opaque; 380 qcrypto_block_free(crypto->block); 381} 382 --- 312 unchanged lines hidden (view full) --- 695 .format_name = "luks", 696 .instance_size = sizeof(BlockCrypto), 697 .bdrv_probe = block_crypto_probe_luks, 698 .bdrv_open = block_crypto_open_luks, 699 .bdrv_close = block_crypto_close, 700 .bdrv_child_perm = bdrv_format_default_perms, 701 .bdrv_co_create = block_crypto_co_create_luks, 702 .bdrv_co_create_opts = block_crypto_co_create_opts_luks, | 376} 377 378static void block_crypto_close(BlockDriverState *bs) 379{ 380 BlockCrypto *crypto = bs->opaque; 381 qcrypto_block_free(crypto->block); 382} 383 --- 312 unchanged lines hidden (view full) --- 696 .format_name = "luks", 697 .instance_size = sizeof(BlockCrypto), 698 .bdrv_probe = block_crypto_probe_luks, 699 .bdrv_open = block_crypto_open_luks, 700 .bdrv_close = block_crypto_close, 701 .bdrv_child_perm = bdrv_format_default_perms, 702 .bdrv_co_create = block_crypto_co_create_luks, 703 .bdrv_co_create_opts = block_crypto_co_create_opts_luks, |
703 .bdrv_truncate = block_crypto_truncate, | 704 .bdrv_co_truncate = block_crypto_co_truncate, |
704 .create_opts = &block_crypto_create_opts_luks, 705 706 .bdrv_reopen_prepare = block_crypto_reopen_prepare, 707 .bdrv_refresh_limits = block_crypto_refresh_limits, 708 .bdrv_co_preadv = block_crypto_co_preadv, 709 .bdrv_co_pwritev = block_crypto_co_pwritev, 710 .bdrv_getlength = block_crypto_getlength, 711 .bdrv_get_info = block_crypto_get_info_luks, 712 .bdrv_get_specific_info = block_crypto_get_specific_info_luks, 713}; 714 715static void block_crypto_init(void) 716{ 717 bdrv_register(&bdrv_crypto_luks); 718} 719 720block_init(block_crypto_init); | 705 .create_opts = &block_crypto_create_opts_luks, 706 707 .bdrv_reopen_prepare = block_crypto_reopen_prepare, 708 .bdrv_refresh_limits = block_crypto_refresh_limits, 709 .bdrv_co_preadv = block_crypto_co_preadv, 710 .bdrv_co_pwritev = block_crypto_co_pwritev, 711 .bdrv_getlength = block_crypto_getlength, 712 .bdrv_get_info = block_crypto_get_info_luks, 713 .bdrv_get_specific_info = block_crypto_get_specific_info_luks, 714}; 715 716static void block_crypto_init(void) 717{ 718 bdrv_register(&bdrv_crypto_luks); 719} 720 721block_init(block_crypto_init); |