From: Martin Wilck Date: Tue, 30 Jul 2013 21:18:28 +0000 (+0200) Subject: DDF: load_ddf_header: more error logging X-Git-Tag: mdadm-3.3~55 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0e5fa86239cfa4cb5fbdbf46c14ddcb58708efc4;p=thirdparty%2Fmdadm.git DDF: load_ddf_header: more error logging Try to determine problem if load_ddf_header fails. May be useful for determining compatibility problems with Fake RAID BIOSes. Signed-off-by: Martin Wilck Signed-off-by: NeilBrown --- diff --git a/super-ddf.c b/super-ddf.c index b639f07f..f55cc11b 100644 --- a/super-ddf.c +++ b/super-ddf.c @@ -754,18 +754,24 @@ static int load_ddf_header(int fd, unsigned long long lba, if (read(fd, hdr, 512) != 512) return 0; - if (!be32_eq(hdr->magic, DDF_HEADER_MAGIC)) + if (!be32_eq(hdr->magic, DDF_HEADER_MAGIC)) { + pr_err("%s: bad header magic\n", __func__); return 0; - if (!be32_eq(calc_crc(hdr, 512), hdr->crc)) + } + if (!be32_eq(calc_crc(hdr, 512), hdr->crc)) { + pr_err("%s: bad CRC\n", __func__); return 0; + } if (memcmp(anchor->guid, hdr->guid, DDF_GUID_LEN) != 0 || memcmp(anchor->revision, hdr->revision, 8) != 0 || !be64_eq(anchor->primary_lba, hdr->primary_lba) || !be64_eq(anchor->secondary_lba, hdr->secondary_lba) || hdr->type != type || memcmp(anchor->pad2, hdr->pad2, 512 - - offsetof(struct ddf_header, pad2)) != 0) + offsetof(struct ddf_header, pad2)) != 0) { + pr_err("%s: header mismatch\n", __func__); return 0; + } /* Looks good enough to me... */ return 1;