crypto.c (d038d2645acabf6f52fd61baeaa021c3ebe97714) crypto.c (c86422c5549c0983b4b4525b8f56a1c69dd67aa1)
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

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

526static void block_crypto_refresh_limits(BlockDriverState *bs, Error **errp)
527{
528 BlockCrypto *crypto = bs->opaque;
529 uint64_t sector_size = qcrypto_block_get_sector_size(crypto->block);
530 bs->bl.request_alignment = sector_size; /* No sub-sector I/O */
531}
532
533
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

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

526static void block_crypto_refresh_limits(BlockDriverState *bs, Error **errp)
527{
528 BlockCrypto *crypto = bs->opaque;
529 uint64_t sector_size = qcrypto_block_get_sector_size(crypto->block);
530 bs->bl.request_alignment = sector_size; /* No sub-sector I/O */
531}
532
533
534static int64_t block_crypto_getlength(BlockDriverState *bs)
534static int64_t coroutine_fn block_crypto_co_getlength(BlockDriverState *bs)
535{
536 BlockCrypto *crypto = bs->opaque;
535{
536 BlockCrypto *crypto = bs->opaque;
537 int64_t len = bdrv_getlength(bs->file->bs);
537 int64_t len = bdrv_co_getlength(bs->file->bs);
538
539 uint64_t offset = qcrypto_block_get_payload_offset(crypto->block);
540 assert(offset < INT64_MAX);
541
542 if (offset > len) {
543 return -EIO;
544 }
545

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

948 .bdrv_co_truncate = block_crypto_co_truncate,
949 .create_opts = &block_crypto_create_opts_luks,
950 .amend_opts = &block_crypto_amend_opts_luks,
951
952 .bdrv_reopen_prepare = block_crypto_reopen_prepare,
953 .bdrv_refresh_limits = block_crypto_refresh_limits,
954 .bdrv_co_preadv = block_crypto_co_preadv,
955 .bdrv_co_pwritev = block_crypto_co_pwritev,
538
539 uint64_t offset = qcrypto_block_get_payload_offset(crypto->block);
540 assert(offset < INT64_MAX);
541
542 if (offset > len) {
543 return -EIO;
544 }
545

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

948 .bdrv_co_truncate = block_crypto_co_truncate,
949 .create_opts = &block_crypto_create_opts_luks,
950 .amend_opts = &block_crypto_amend_opts_luks,
951
952 .bdrv_reopen_prepare = block_crypto_reopen_prepare,
953 .bdrv_refresh_limits = block_crypto_refresh_limits,
954 .bdrv_co_preadv = block_crypto_co_preadv,
955 .bdrv_co_pwritev = block_crypto_co_pwritev,
956 .bdrv_getlength = block_crypto_getlength,
956 .bdrv_co_getlength = block_crypto_co_getlength,
957 .bdrv_measure = block_crypto_measure,
958 .bdrv_get_info = block_crypto_get_info_luks,
959 .bdrv_get_specific_info = block_crypto_get_specific_info_luks,
960 .bdrv_amend_options = block_crypto_amend_options_luks,
961 .bdrv_co_amend = block_crypto_co_amend_luks,
962 .bdrv_amend_pre_run = block_crypto_amend_prepare,
963 .bdrv_amend_clean = block_crypto_amend_cleanup,
964
965 .is_format = true,
966
967 .strong_runtime_opts = block_crypto_strong_runtime_opts,
968};
969
970static void block_crypto_init(void)
971{
972 bdrv_register(&bdrv_crypto_luks);
973}
974
975block_init(block_crypto_init);
957 .bdrv_measure = block_crypto_measure,
958 .bdrv_get_info = block_crypto_get_info_luks,
959 .bdrv_get_specific_info = block_crypto_get_specific_info_luks,
960 .bdrv_amend_options = block_crypto_amend_options_luks,
961 .bdrv_co_amend = block_crypto_co_amend_luks,
962 .bdrv_amend_pre_run = block_crypto_amend_prepare,
963 .bdrv_amend_clean = block_crypto_amend_cleanup,
964
965 .is_format = true,
966
967 .strong_runtime_opts = block_crypto_strong_runtime_opts,
968};
969
970static void block_crypto_init(void)
971{
972 bdrv_register(&bdrv_crypto_luks);
973}
974
975block_init(block_crypto_init);