From 900811f76d722d12f70fe094330fcfc0bf96e96e Mon Sep 17 00:00:00 2001 From: basebuilder_pel7ppc64bebuilder0 Date: Thu, 17 May 2018 19:13:32 +0200 Subject: [PATCH] util linux patches Signed-off-by: basebuilder_pel7ppc64bebuilder0 --- ...adata-signature-check-for-IMSM-on-4K.patch | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 SOURCES/0123-libblkid-Add-metadata-signature-check-for-IMSM-on-4K.patch diff --git a/SOURCES/0123-libblkid-Add-metadata-signature-check-for-IMSM-on-4K.patch b/SOURCES/0123-libblkid-Add-metadata-signature-check-for-IMSM-on-4K.patch new file mode 100644 index 00000000..c96c309a --- /dev/null +++ b/SOURCES/0123-libblkid-Add-metadata-signature-check-for-IMSM-on-4K.patch @@ -0,0 +1,59 @@ +From 2181ce4a5726c4c72e68e6964b7ef7442e507707 Mon Sep 17 00:00:00 2001 +From: Alexey Obitotskiy +Date: Fri, 24 Jun 2016 11:59:35 +0200 +Subject: [PATCH] libblkid: Add metadata signature check for IMSM on 4Kn drives + +Drives with 512 and 4K sectors have different offset for +metadata signature. Without signature detected on 4Kn drives +those drives will not be recognized as raid member. This +patch adds checking for IMSM signature for 4Kn drives. + +Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1451704 +Signed-off-by: Alexey Obitotskiy +Signed-off-by: Karel Zak +--- + libblkid/src/superblocks/isw_raid.c | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +diff --git a/libblkid/src/superblocks/isw_raid.c b/libblkid/src/superblocks/isw_raid.c +index 065c2b2..81d53a1 100644 +--- a/libblkid/src/superblocks/isw_raid.c ++++ b/libblkid/src/superblocks/isw_raid.c +@@ -25,11 +25,11 @@ struct isw_metadata { + + #define ISW_SIGNATURE "Intel Raid ISM Cfg Sig. " + +- + static int probe_iswraid(blkid_probe pr, + const struct blkid_idmag *mag __attribute__((__unused__))) + { + uint64_t off; ++ unsigned int sector_size; + struct isw_metadata *isw; + + if (pr->size < 0x10000) +@@ -37,16 +37,17 @@ static int probe_iswraid(blkid_probe pr, + if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr)) + return 1; + +- off = ((pr->size / 0x200) - 2) * 0x200; +- isw = (struct isw_metadata *) +- blkid_probe_get_buffer(pr, +- off, +- sizeof(struct isw_metadata)); ++ sector_size = blkid_probe_get_sectorsize(pr); ++ off = ((pr->size / sector_size) - 2) * sector_size; ++ ++ isw = (struct isw_metadata *)blkid_probe_get_buffer(pr, ++ off, sizeof(struct isw_metadata)); + if (!isw) + return errno ? -errno : 1; + + if (memcmp(isw->sig, ISW_SIGNATURE, sizeof(ISW_SIGNATURE)-1) != 0) + return 1; ++ + if (blkid_probe_sprintf_version(pr, "%6s", + &isw->sig[sizeof(ISW_SIGNATURE)-1]) != 0) + return 1; +-- +2.9.4