Hi! Here is the updated series of my patches, incorporating all the feedback I received.
Patches are strictly divided by topic to 3 groups, and each group depends on former groups. * Patches 1,2 implement qcrypto generic amend interface, including definition of structs used in crypto.json and implement this in luks crypto driver Nothing is exposed to the user at this stage * Patches 3-9 use the code from patches 1,2 to implement qemu-img amend based encryption slot management for luks and for qcow2, and add a bunch of iotests to cover that. * Patches 10-13 add x-blockdev-amend (I'll drop the -x prefix if you like), and wire it to luks and qcow2 driver to implement qmp based encryption slot management also using the code from patches 1,2, and also add a bunch of iotests to cover this. Best regards, Maxim Levitsky Maxim Levitsky (13): qcrypto: add generic infrastructure for crypto options amendment qcrypto-luks: implement encryption key management block: amend: add 'force' option block: amend: separate amend and create options for qemu-img block/crypto: rename two functions block/crypto: implement the encryption key management qcow2: extend qemu-img amend interface with crypto options iotests: filter few more luks specific create options qemu-iotests: qemu-img tests for luks key management block: add generic infrastructure for x-blockdev-amend qmp command block/crypto: implement blockdev-amend block/qcow2: implement blockdev-amend iotests: add tests for blockdev-amend block.c | 4 +- block/Makefile.objs | 2 +- block/amend.c | 108 +++++++++ block/crypto.c | 204 +++++++++++++++-- block/crypto.h | 34 +++ block/qcow2.c | 269 +++++++++++++++------- crypto/block-luks.c | 374 ++++++++++++++++++++++++++++++- crypto/block.c | 31 +++ crypto/blockpriv.h | 8 + include/block/block.h | 1 + include/block/block_int.h | 24 +- include/crypto/block.h | 22 ++ qapi/block-core.json | 68 ++++++ qapi/crypto.json | 64 ++++++ qapi/job.json | 4 +- qemu-img-cmds.hx | 4 +- qemu-img.c | 26 ++- qemu-img.texi | 6 +- tests/qemu-iotests/087.out | 6 +- tests/qemu-iotests/134.out | 2 +- tests/qemu-iotests/158.out | 4 +- tests/qemu-iotests/188.out | 2 +- tests/qemu-iotests/189.out | 4 +- tests/qemu-iotests/198.out | 4 +- tests/qemu-iotests/300 | 207 +++++++++++++++++ tests/qemu-iotests/300.out | 99 ++++++++ tests/qemu-iotests/301 | 90 ++++++++ tests/qemu-iotests/301.out | 30 +++ tests/qemu-iotests/302 | 284 +++++++++++++++++++++++ tests/qemu-iotests/302.out | 40 ++++ tests/qemu-iotests/303 | 235 +++++++++++++++++++ tests/qemu-iotests/303.out | 33 +++ tests/qemu-iotests/common.filter | 6 +- tests/qemu-iotests/group | 6 + 34 files changed, 2174 insertions(+), 131 deletions(-) create mode 100644 block/amend.c create mode 100755 tests/qemu-iotests/300 create mode 100644 tests/qemu-iotests/300.out create mode 100755 tests/qemu-iotests/301 create mode 100644 tests/qemu-iotests/301.out create mode 100644 tests/qemu-iotests/302 create mode 100644 tests/qemu-iotests/302.out create mode 100644 tests/qemu-iotests/303 create mode 100644 tests/qemu-iotests/303.out -- 2.17.2