Update to upstream util-linux 2.20.1
[framework/base/util-linux-ng.git] / libblkid / src / superblocks / via_raid.c
similarity index 83%
rename from shlibs/blkid/src/probers/via_raid.c
rename to libblkid/src/superblocks/via_raid.c
index d423779..eba7e4b 100644 (file)
@@ -16,7 +16,7 @@
 #include <ctype.h>
 #include <stdint.h>
 
-#include "blkidP.h"
+#include "superblocks.h"
 
 struct via_metadata {
        uint16_t        signature;
@@ -45,13 +45,16 @@ static uint8_t via_checksum(struct via_metadata *v)
        return cs == v->checksum;
 }
 
-static int probe_viaraid(blkid_probe pr, const struct blkid_idmag *mag)
+static int probe_viaraid(blkid_probe pr,
+               const struct blkid_idmag *mag __attribute__((__unused__)))
 {
        uint64_t off;
        struct via_metadata *v;
 
        if (pr->size < 0x10000)
                return -1;
+       if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
+               return -1;
 
        off = ((pr->size / 0x200)-1) * 0x200;
 
@@ -69,6 +72,10 @@ static int probe_viaraid(blkid_probe pr, const struct blkid_idmag *mag)
                return -1;
        if (blkid_probe_sprintf_version(pr, "%u", v->version_number) != 0)
                return -1;
+       if (blkid_probe_set_magic(pr, off,
+                               sizeof(v->signature),
+                               (unsigned char *) &v->signature))
+               return -1;
        return 0;
 }