On Mon, 2020-05-04 at 11:19 +0100, Daniel P. Berrangé wrote: > On Sun, May 03, 2020 at 09:43:10PM +0300, Maxim Levitsky wrote: > > Hi! > > Here is the updated series of my patches, incorporating all the feedback I > > received. > > > > This implements the API interface that we agreed upon except that I merged > > the > > LUKSKeyslotActive/LUKSKeyslotInactive union into a struct because otherwise > > I need nested unions which are not supported currently by QAPI parser. > > This didn't change the API and thus once support for nested unions is there, > > it can always be implemented in backward compatible way. > > > > I hope that this series will finally be considered for merging, since I am > > somewhat running > > out of time to finish this task. > > > > 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. > > > > Tested with -raw,-qcow2 and -luks iotests and 'make check' > > > > V3: rebased, addressed most of the review feedback. > > For now I kept the slot bitmap code since I am not sure that replacing it > > will be better. > > I'm still of the opinion that the bitmaps code should be replaced. > With this current design we are iterating over the slot of keys slots > 4 times, doing different checks/logic in each iteration. This is really > not nice for understanding how the code works. IMHO we should be iterating > at most twice - once to validate the requested configuration, and once > to apply the requested configuration. Even if there si duplication of > logic in between the delete/add key codepaths, I think it will be better > as the logic for each operation will be in one place. > > > Regards, > Daniel
All right then, I also agree kind of that these iterations aren't that nice. I just wanted to do this in the same way the spec defines it, which is currently kind of independent of how key add/remove operation. I'll send updated code soon. Best regards, Maxim Levitsky