Update to upstream util-linux 2.20.1
[framework/base/util-linux-ng.git] / libblkid / src / superblocks / isw_raid.c
similarity index 79%
rename from shlibs/blkid/src/probers/isw_raid.c
rename to libblkid/src/superblocks/isw_raid.c
index f9ae745..755c1b6 100644 (file)
@@ -13,7 +13,7 @@
 #include <string.h>
 #include <stdint.h>
 
-#include "blkidP.h"
+#include "superblocks.h"
 
 struct isw_metadata {
        uint8_t         sig[32];
@@ -26,13 +26,16 @@ struct isw_metadata {
 #define ISW_SIGNATURE          "Intel Raid ISM Cfg Sig. "
 
 
-static int probe_iswraid(blkid_probe pr, const struct blkid_idmag *mag)
+static int probe_iswraid(blkid_probe pr,
+               const struct blkid_idmag *mag __attribute__((__unused__)))
 {
        uint64_t off;
        struct isw_metadata *isw;
 
        if (pr->size < 0x10000)
                return -1;
+       if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
+               return -1;
 
        off = ((pr->size / 0x200) - 2) * 0x200;
        isw = (struct isw_metadata *)
@@ -46,7 +49,9 @@ static int probe_iswraid(blkid_probe pr, const struct blkid_idmag *mag)
        if (blkid_probe_sprintf_version(pr, "%6s",
                        &isw->sig[sizeof(ISW_SIGNATURE)-1]) != 0)
                return -1;
-
+       if (blkid_probe_set_magic(pr, off, sizeof(isw->sig),
+                               (unsigned char *) isw->sig))
+               return -1;
        return 0;
 }