Message ID | 20220304153729.711387-4-hreitz@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | block/amend: Fix failures seen in iotest 296 | expand |
diff --git a/block/crypto.c b/block/crypto.c index 5225a68a54..9d5fecbef8 100644 --- a/block/crypto.c +++ b/block/crypto.c @@ -781,10 +781,16 @@ static int block_crypto_amend_prepare(BlockDriverState *bs, Error **errp) { BlockCrypto *crypto = bs->opaque; + int ret; /* apply for exclusive read/write permissions to the underlying file */ crypto->updating_keys = true; - return bdrv_child_refresh_perms(bs, bs->file, errp); + ret = bdrv_child_refresh_perms(bs, bs->file, errp); + if (ret < 0) { + /* Well, in this case we will not be updating any keys */ + crypto->updating_keys = false; + } + return ret; } static void
When the permissions could not be changed as would be necessary for updating the keys, reset updating_keys to false so block_crypto_child_perms() will not continue to try claiming these permissions. Signed-off-by: Hanna Reitz <hreitz@redhat.com> --- block/crypto.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)