* [PATCH] dm-integrity: correctly calculate the size of metadata area
@ 2019-05-07 18:28 Mikulas Patocka
2019-05-07 18:49 ` Mike Snitzer
0 siblings, 1 reply; 2+ messages in thread
From: Mikulas Patocka @ 2019-05-07 18:28 UTC (permalink / raw)
To: Milan Broz, Mike Snitzer; +Cc: dm-devel
When we use separate devices for data and metadata, dm-integrity would
incorrectly calculate the size of the metadata device as if it had
512-byte block size - and it would refuse activation with larger block
size and smaller metadata device.
This patch fixes it so that it takes actual block size into account.
It fixes https://gitlab.com/cryptsetup/cryptsetup/issues/450
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Cc: stable@vger.kernel.org # v4.19+
Fixes: 356d9d52e122 ("dm integrity: allow separate metadata device")
---
drivers/md/dm-integrity.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: linux-2.6/drivers/md/dm-integrity.c
===================================================================
--- linux-2.6.orig/drivers/md/dm-integrity.c 2019-05-07 18:57:04.000000000 +0200
+++ linux-2.6/drivers/md/dm-integrity.c 2019-05-07 20:26:44.000000000 +0200
@@ -2568,7 +2568,7 @@ static int calculate_device_limits(struc
if (last_sector < ic->start || last_sector >= ic->meta_device_sectors)
return -EINVAL;
} else {
- __u64 meta_size = ic->provided_data_sectors * ic->tag_size;
+ __u64 meta_size = (ic->provided_data_sectors >> ic->sb->log2_sectors_per_block) * ic->tag_size;
meta_size = (meta_size + ((1U << (ic->log2_buffer_sectors + SECTOR_SHIFT)) - 1))
>> (ic->log2_buffer_sectors + SECTOR_SHIFT);
meta_size <<= ic->log2_buffer_sectors;
@@ -3439,7 +3439,7 @@ try_smaller_buffer:
DEBUG_print(" journal_sections %u\n", (unsigned)le32_to_cpu(ic->sb->journal_sections));
DEBUG_print(" journal_entries %u\n", ic->journal_entries);
DEBUG_print(" log2_interleave_sectors %d\n", ic->sb->log2_interleave_sectors);
- DEBUG_print(" device_sectors 0x%llx\n", (unsigned long long)ic->device_sectors);
+ DEBUG_print(" data_device_sectors 0x%llx\n", (unsigned long long)ic->data_device_sectors);
DEBUG_print(" initial_sectors 0x%x\n", ic->initial_sectors);
DEBUG_print(" metadata_run 0x%x\n", ic->metadata_run);
DEBUG_print(" log2_metadata_run %d\n", ic->log2_metadata_run);
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: dm-integrity: correctly calculate the size of metadata area
2019-05-07 18:28 [PATCH] dm-integrity: correctly calculate the size of metadata area Mikulas Patocka
@ 2019-05-07 18:49 ` Mike Snitzer
0 siblings, 0 replies; 2+ messages in thread
From: Mike Snitzer @ 2019-05-07 18:49 UTC (permalink / raw)
To: Mikulas Patocka; +Cc: dm-devel, Milan Broz
On Tue, May 07 2019 at 2:28pm -0400,
Mikulas Patocka <mpatocka@redhat.com> wrote:
> When we use separate devices for data and metadata, dm-integrity would
> incorrectly calculate the size of the metadata device as if it had
> 512-byte block size - and it would refuse activation with larger block
> size and smaller metadata device.
>
> This patch fixes it so that it takes actual block size into account.
>
> It fixes https://gitlab.com/cryptsetup/cryptsetup/issues/450
>
> Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
> Cc: stable@vger.kernel.org # v4.19+
> Fixes: 356d9d52e122 ("dm integrity: allow separate metadata device")
Applied, and I rebased your bitmap patches ontop of it.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-05-07 18:49 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-05-07 18:28 [PATCH] dm-integrity: correctly calculate the size of metadata area Mikulas Patocka
2019-05-07 18:49 ` Mike Snitzer
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.