]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
DDF: load_ddf_header: more error logging
authorMartin Wilck <mwilck@arcor.de>
Tue, 30 Jul 2013 21:18:28 +0000 (23:18 +0200)
committerNeilBrown <neilb@suse.de>
Wed, 31 Jul 2013 02:47:44 +0000 (12:47 +1000)
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 <mwilck@arcor.de>
Signed-off-by: NeilBrown <neilb@suse.de>
super-ddf.c

index b639f07fe43418c669a9678ae25105b0df2f1587..f55cc11bc6bd54728550f0b40867af5243e54cd3 100644 (file)
@@ -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;