mirror of
https://gitlab.com/cryptsetup/cryptsetup.git
synced 2025-12-12 11:20:10 +01:00
Respect CRYPT_ACTIVATE_SHARED in reencryption.
This commit is contained in:
@@ -494,7 +494,7 @@ int LUKS2_reencrypt_check_device_size(struct crypt_device *cd,
|
|||||||
struct luks2_hdr *hdr,
|
struct luks2_hdr *hdr,
|
||||||
uint64_t check_size,
|
uint64_t check_size,
|
||||||
uint64_t *dev_size,
|
uint64_t *dev_size,
|
||||||
bool activation,
|
bool device_exclusive_check,
|
||||||
bool dynamic);
|
bool dynamic);
|
||||||
|
|
||||||
int LUKS2_reencrypt_digest_verify(struct crypt_device *cd,
|
int LUKS2_reencrypt_digest_verify(struct crypt_device *cd,
|
||||||
|
|||||||
@@ -4331,7 +4331,7 @@ int LUKS2_reencrypt_data_offset(struct luks2_hdr *hdr, bool blockwise)
|
|||||||
|
|
||||||
/* internal only */
|
/* internal only */
|
||||||
int LUKS2_reencrypt_check_device_size(struct crypt_device *cd, struct luks2_hdr *hdr,
|
int LUKS2_reencrypt_check_device_size(struct crypt_device *cd, struct luks2_hdr *hdr,
|
||||||
uint64_t check_size, uint64_t *dev_size, bool activation, bool dynamic)
|
uint64_t check_size, uint64_t *dev_size, bool device_exclusive_check, bool dynamic)
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
uint64_t data_offset, real_size = 0;
|
uint64_t data_offset, real_size = 0;
|
||||||
@@ -4340,7 +4340,8 @@ int LUKS2_reencrypt_check_device_size(struct crypt_device *cd, struct luks2_hdr
|
|||||||
(LUKS2_get_segment_by_flag(hdr, "backup-moved-segment") || dynamic))
|
(LUKS2_get_segment_by_flag(hdr, "backup-moved-segment") || dynamic))
|
||||||
check_size += reencrypt_data_shift(hdr);
|
check_size += reencrypt_data_shift(hdr);
|
||||||
|
|
||||||
r = device_check_access(cd, crypt_data_device(cd), activation ? DEV_EXCL : DEV_OK);
|
r = device_check_access(cd, crypt_data_device(cd),
|
||||||
|
device_exclusive_check ? DEV_EXCL : DEV_OK);
|
||||||
if (r)
|
if (r)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
|
|||||||
@@ -5092,7 +5092,9 @@ static int _open_and_activate_reencrypt_device(struct crypt_device *cd,
|
|||||||
log_dbg(cd, "Entering clean reencryption state mode.");
|
log_dbg(cd, "Entering clean reencryption state mode.");
|
||||||
|
|
||||||
if (r >= 0)
|
if (r >= 0)
|
||||||
r = LUKS2_reencrypt_check_device_size(cd, hdr, minimal_size, &device_size, true, dynamic_size);
|
r = LUKS2_reencrypt_check_device_size(cd, hdr, minimal_size, &device_size,
|
||||||
|
!(flags & CRYPT_ACTIVATE_SHARED),
|
||||||
|
dynamic_size);
|
||||||
|
|
||||||
if (r >= 0)
|
if (r >= 0)
|
||||||
r = LUKS2_activate_multi(cd, name, vks, device_size >> SECTOR_SHIFT, flags);
|
r = LUKS2_activate_multi(cd, name, vks, device_size >> SECTOR_SHIFT, flags);
|
||||||
|
|||||||
Reference in New Issue
Block a user