From ce343148c06c394971fec2ca53f15c60b87a8cf8 Mon Sep 17 00:00:00 2001
From: David Teigland <teigland@redhat.com>
Date: Thu, 18 Feb 2021 11:42:32 -0600
Subject: [PATCH 21/22] fix check for md raid imsm signature on 4k devices

On devices with 4k logical block size, the imsm signature
is located 8k from the end of the device, not 1k as is
the case for devices with 512 LBS.
---
 lib/device/dev-md.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/lib/device/dev-md.c b/lib/device/dev-md.c
index 8fe7fc3..9f211a8 100644
--- a/lib/device/dev-md.c
+++ b/lib/device/dev-md.c
@@ -56,6 +56,16 @@ static int _dev_has_imsm_magic(struct device *dev, uint64_t devsize_sectors)
 {
 	char imsm_signature[IMSM_SIG_LEN];
 	uint64_t off = (devsize_sectors * 512) - 1024;
+	unsigned int physical_block_size = 0;
+	unsigned int logical_block_size = 0;
+
+	if (!dev_get_direct_block_sizes(dev, &physical_block_size, &logical_block_size))
+		return_0;
+
+	if (logical_block_size == 4096)
+		off = (devsize_sectors * 512) - 8192;
+	else
+		off = (devsize_sectors * 512) - 1024;
 
 	if (!dev_read_bytes(dev, off, IMSM_SIG_LEN, imsm_signature))
 		return_0;
-- 
2.27.0

