]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
blkid: convert superblocks to new calling convention
authorHannes Reinecke <hare@suse.de>
Thu, 20 Mar 2014 10:03:50 +0000 (11:03 +0100)
committerKarel Zak <kzak@redhat.com>
Thu, 20 Mar 2014 14:26:48 +0000 (15:26 +0100)
With the previous patch the scanning functions were
modified to return a differentiated return code.
To correctly abort scanning when an I/O error occurs
we need to differentiate between 'error' (= -1) and
'not found' (= 1) in the probe functions.
This patch updates all superblock scanning functions
to the new calling convention.

Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Karel Zak <kzak@redhat.com>
56 files changed:
libblkid/src/partitions/aix.c
libblkid/src/partitions/bsd.c
libblkid/src/partitions/dos.c
libblkid/src/partitions/gpt.c
libblkid/src/partitions/mac.c
libblkid/src/partitions/minix.c
libblkid/src/partitions/sgi.c
libblkid/src/partitions/solaris_x86.c
libblkid/src/partitions/sun.c
libblkid/src/partitions/ultrix.c
libblkid/src/partitions/unixware.c
libblkid/src/superblocks/adaptec_raid.c
libblkid/src/superblocks/bcache.c
libblkid/src/superblocks/befs.c
libblkid/src/superblocks/btrfs.c
libblkid/src/superblocks/cramfs.c
libblkid/src/superblocks/ddf_raid.c
libblkid/src/superblocks/drbd.c
libblkid/src/superblocks/drbdproxy_datalog.c
libblkid/src/superblocks/exfat.c
libblkid/src/superblocks/ext.c
libblkid/src/superblocks/f2fs.c
libblkid/src/superblocks/gfs.c
libblkid/src/superblocks/hfs.c
libblkid/src/superblocks/highpoint_raid.c
libblkid/src/superblocks/hpfs.c
libblkid/src/superblocks/iso9660.c
libblkid/src/superblocks/isw_raid.c
libblkid/src/superblocks/jfs.c
libblkid/src/superblocks/jmicron_raid.c
libblkid/src/superblocks/linux_raid.c
libblkid/src/superblocks/lsi_raid.c
libblkid/src/superblocks/luks.c
libblkid/src/superblocks/lvm.c
libblkid/src/superblocks/minix.c
libblkid/src/superblocks/netware.c
libblkid/src/superblocks/nilfs.c
libblkid/src/superblocks/ntfs.c
libblkid/src/superblocks/nvidia_raid.c
libblkid/src/superblocks/ocfs.c
libblkid/src/superblocks/promise_raid.c
libblkid/src/superblocks/reiserfs.c
libblkid/src/superblocks/romfs.c
libblkid/src/superblocks/silicon_raid.c
libblkid/src/superblocks/squashfs.c
libblkid/src/superblocks/swap.c
libblkid/src/superblocks/sysv.c
libblkid/src/superblocks/ubifs.c
libblkid/src/superblocks/udf.c
libblkid/src/superblocks/ufs.c
libblkid/src/superblocks/vfat.c
libblkid/src/superblocks/via_raid.c
libblkid/src/superblocks/vmfs.c
libblkid/src/superblocks/vxfs.c
libblkid/src/superblocks/xfs.c
libblkid/src/superblocks/zfs.c

index de397bf4ad1485b65063eb539962976c54f2a566..fa64c38ad3dcf9a22c3f213eacb8c1ad06a6fb04 100644 (file)
@@ -22,19 +22,17 @@ static int probe_aix_pt(blkid_probe pr,
 
        if (blkid_partitions_need_typeonly(pr))
                /* caller does not ask for details about partitions */
-               return 0;
+               return BLKID_PROBE_OK;
 
        ls = blkid_probe_get_partlist(pr);
        if (!ls)
-               goto err;
+               return BLKID_PROBE_NONE;
 
        tab = blkid_partlist_new_parttable(ls, "aix", 0);
        if (!tab)
-               goto err;
+               return -ENOMEM;
 
-       return 0;
-err:
-       return -1;
+       return BLKID_PROBE_OK;
 }
 
 /*
index 3de6a589e990b87bcf1380e96b246de6e898bd2f..366bdc475a7f172d2528035e7c34d770460f718e 100644 (file)
@@ -36,20 +36,24 @@ static int probe_bsd_pt(blkid_probe pr, const struct blkid_idmag *mag)
        blkid_partlist ls;
        int i, nparts = BSD_MAXPARTITIONS;
        unsigned char *data;
+       int rc = BLKID_PROBE_NONE;
 
        if (blkid_partitions_need_typeonly(pr))
                /* caller does not ask for details about partitions */
-               return 0;
+               return rc;
 
        data = blkid_probe_get_sector(pr, BLKID_MAG_SECTOR(mag));
-       if (!data)
+       if (!data) {
+               if (errno)
+                       rc = -errno;
                goto nothing;
+       }
 
        l = (struct bsd_disklabel *) data + BLKID_MAG_LASTOFFSET(mag);
 
        ls = blkid_probe_get_partlist(pr);
        if (!ls)
-               goto err;
+               goto nothing;
 
        /* try to determine the real type of BSD system according to
         * (parental) primary partition */
@@ -75,8 +79,10 @@ static int probe_bsd_pt(blkid_probe pr, const struct blkid_idmag *mag)
        }
 
        tab = blkid_partlist_new_parttable(ls, name, BLKID_MAG_OFFSET(mag));
-       if (!tab)
-               goto err;
+       if (!tab) {
+               rc = -ENOMEM;
+               goto nothing;
+       }
 
        if (le16_to_cpu(l->d_npartitions) < BSD_MAXPARTITIONS)
                nparts = le16_to_cpu(l->d_npartitions);
@@ -112,18 +118,18 @@ static int probe_bsd_pt(blkid_probe pr, const struct blkid_idmag *mag)
                }
 
                par = blkid_partlist_add_partition(ls, tab, start, size);
-               if (!par)
-                       goto err;
+               if (!par) {
+                       rc = -ENOMEM;
+                       goto nothing;
+               }
 
                blkid_partition_set_type(par, p->p_fstype);
        }
 
-       return 0;
+       return BLKID_PROBE_OK;
 
 nothing:
-       return 1;
-err:
-       return -1;
+       return rc;
 }
 
 
index 14f326d200470000163cfd18b0a780fe0e55d301..346645899f2993025ac2ae492197a498b0096556 100644 (file)
@@ -52,10 +52,13 @@ static int parse_dos_extended(blkid_probe pr, blkid_parttable tab,
                uint32_t start, size;
 
                if (++ct_nodata > 100)
-                       return 0;
+                       return BLKID_PROBE_OK;
                data = blkid_probe_get_sector(pr, cur_start);
-               if (!data)
+               if (!data) {
+                       if (errno)
+                               return -errno;
                        goto leave;     /* malformed partition? */
+               }
 
                if (!mbr_is_valid_magic(data))
                        goto leave;
@@ -98,7 +101,7 @@ static int parse_dos_extended(blkid_probe pr, blkid_parttable tab,
 
                        par = blkid_partlist_add_partition(ls, tab, abs_start, size);
                        if (!par)
-                               goto err;
+                               return -ENOMEM;
 
                        blkid_partition_set_type(par, p->sys_ind);
                        blkid_partition_set_flags(par, p->boot_ind);
@@ -123,9 +126,7 @@ static int parse_dos_extended(blkid_probe pr, blkid_parttable tab,
                cur_size = size;
        }
 leave:
-       return 0;
-err:
-       return -1;
+       return BLKID_PROBE_OK;
 }
 
 static int probe_dos_pt(blkid_probe pr,
@@ -142,8 +143,11 @@ static int probe_dos_pt(blkid_probe pr,
 
 
        data = blkid_probe_get_sector(pr, 0);
-       if (!data)
+       if (!data) {
+               if (errno)
+                       return -errno;
                goto nothing;
+       }
 
        /* ignore disks with AIX magic number -- for more details see aix.c */
        if (memcmp(data, BLKID_AIX_MAGIC_STRING, BLKID_AIX_MAGIC_STRLEN) == 0)
@@ -198,6 +202,8 @@ static int probe_dos_pt(blkid_probe pr,
        }
 
        ls = blkid_probe_get_partlist(pr);
+       if (!ls)
+               goto nothing;
 
        /* sector size factor (the start and size are in the real sectors, but
         * we need to convert all sizes to 512 logical sectors
@@ -207,7 +213,7 @@ static int probe_dos_pt(blkid_probe pr,
        /* allocate a new partition table */
        tab = blkid_partlist_new_parttable(ls, "dos", MBR_PT_OFFSET);
        if (!tab)
-               goto err;
+               return -ENOMEM;
 
        if (id)
                blkid_parttable_set_id(tab, (unsigned char *) idstr);
@@ -227,7 +233,7 @@ static int probe_dos_pt(blkid_probe pr,
                }
                par = blkid_partlist_add_partition(ls, tab, start, size);
                if (!par)
-                       goto err;
+                       return -ENOMEM;
 
                blkid_partition_set_type(par, p->sys_ind);
                blkid_partition_set_flags(par, p->boot_ind);
@@ -248,13 +254,14 @@ static int probe_dos_pt(blkid_probe pr,
                        continue;
                if (is_extended(p) &&
                    parse_dos_extended(pr, tab, start, size, ssf) == -1)
-                       goto err;
+                       goto nothing;
        }
 
        /* Parse subtypes (nested partitions) on large disks */
        if (!blkid_probe_is_tiny(pr)) {
                for (p = p0, i = 0; i < 4; i++, p++) {
                        size_t n;
+                       int rc;
 
                        if (!dos_partition_get_size(p) || is_extended(p))
                                continue;
@@ -263,20 +270,19 @@ static int probe_dos_pt(blkid_probe pr,
                                if (dos_nested[n].type != p->sys_ind)
                                        continue;
 
-                               if (blkid_partitions_do_subprobe(pr,
+                               rc = blkid_partitions_do_subprobe(pr,
                                                blkid_partlist_get_partition(ls, i),
-                                               dos_nested[n].id) == -1)
-                                       goto err;
+                                               dos_nested[n].id);
+                               if (rc < 0)
+                                       return rc;
                                break;
                        }
                }
        }
-       return 0;
+       return BLKID_PROBE_OK;
 
 nothing:
-       return 1;
-err:
-       return -1;
+       return BLKID_PROBE_NONE;
 }
 
 
index 65a0f43765be0df2d81a859189c315365f538368..186fbd9295c3b88bbf436659d9e20258e015b922 100644 (file)
@@ -168,8 +168,11 @@ static int is_pmbr_valid(blkid_probe pr, int *has)
                goto ok;                        /* skip PMBR check */
 
        data = blkid_probe_get_sector(pr, 0);
-       if (!data)
+       if (!data) {
+               if (errno)
+                       return -errno;
                goto failed;
+       }
 
        if (!mbr_is_valid_magic(data))
                goto failed;
@@ -302,19 +305,27 @@ static int probe_gpt_pt(blkid_probe pr,
        uint64_t fu, lu;
        uint32_t ssf, i;
        efi_guid_t guid;
+       int ret;
 
        if (last_lba(pr, &lastlba))
                goto nothing;
 
-       if (!is_pmbr_valid(pr, NULL))
+       ret = is_pmbr_valid(pr, NULL);
+       if (ret < 0)
+               return ret;
+       else if (ret == 0)
                goto nothing;
 
+       errno = 0;
        h = get_gpt_header(pr, &hdr, &e, (lba = GPT_PRIMARY_LBA), lastlba);
-       if (!h)
+       if (!h && !errno)
                h = get_gpt_header(pr, &hdr, &e, (lba = lastlba), lastlba);
 
-       if (!h)
+       if (!h) {
+               if (errno)
+                       return -errno;
                goto nothing;
+       }
 
        blkid_probe_use_wiper(pr, lba * blkid_probe_get_size(pr), 8);
 
@@ -330,12 +341,12 @@ static int probe_gpt_pt(blkid_probe pr,
                /* Non-binary interface -- caller does not ask for details
                 * about partitions, just set generic varibles only. */
                blkid_partitions_set_ptuuid(pr, (unsigned char *) &guid);
-               return 0;
+               return BLKID_PROBE_OK;
        }
 
        ls = blkid_probe_get_partlist(pr);
        if (!ls)
-               goto err;
+               goto nothing;
 
        tab = blkid_partlist_new_parttable(ls, "gpt", lba << 9);
        if (!tab)
@@ -389,12 +400,13 @@ static int probe_gpt_pt(blkid_probe pr,
                blkid_partition_set_flags(par, le64_to_cpu(e->attributes));
        }
 
-       return 0;
+       return BLKID_PROBE_OK;
 
 nothing:
-       return 1;
+       return BLKID_PROBE_NONE;
+
 err:
-       return -1;
+       return -ENOMEM;
 }
 
 
index 7f8bb75efe9383c024980dea05ff0c29bd1ddfdc..3b302d92f114fc52c3cd44bd10b20b4064d9cb03 100644 (file)
@@ -87,8 +87,11 @@ static int probe_mac_pt(blkid_probe pr,
         * the first block on the disk.
         */
        md = (struct mac_driver_desc *) blkid_probe_get_sector(pr, 0);
-       if (!md)
+       if (!md) {
+               if (errno)
+                       return -errno;
                goto nothing;
+       }
 
        block_size = be16_to_cpu(md->block_size);
 
@@ -96,8 +99,11 @@ static int probe_mac_pt(blkid_probe pr,
         * the second block on the disk.
         */
        p = (struct mac_partition *) get_mac_block(pr, block_size, 1);
-       if (!p)
+       if (!p) {
+               if (errno)
+                       return -errno;
                goto nothing;
+       }
 
        /* check the first partition signature */
        if (!has_part_signature(p))
@@ -109,7 +115,7 @@ static int probe_mac_pt(blkid_probe pr,
 
        ls = blkid_probe_get_partlist(pr);
        if (!ls)
-               goto err;
+               goto nothing;
 
        tab = blkid_partlist_new_parttable(ls, "mac", 0);
        if (!tab)
@@ -124,15 +130,18 @@ static int probe_mac_pt(blkid_probe pr,
                uint32_t size;
 
                p = (struct mac_partition *) get_mac_block(pr, block_size, i);
-               if (!p)
+               if (!p) {
+                       if (errno)
+                               return -errno;
                        goto nothing;
+               }
                if (!has_part_signature(p))
                        goto nothing;
 
                if (be32_to_cpu(p->map_count) != nblks) {
                        DBG(LOWPROBE, blkid_debug(
                                "mac: inconsisten map_count in partition map, "
-                               "entry[0]: %d, entry[%d]: %d",
+                               "entry[0]: %d, entry[%d]: %d",
                                nblks, i - 1,
                                be32_to_cpu(p->map_count)));
                }
@@ -157,12 +166,12 @@ static int probe_mac_pt(blkid_probe pr,
                                                sizeof(p->type));
        }
 
-       return 0;
+       return BLKID_PROBE_OK;
 
 nothing:
-       return 1;
+       return BLKID_PROBE_NONE;
 err:
-       return -1;
+       return -ENOMEM;
 }
 
 /*
index 0a597fbc4aa0f38ffd07f488702d22329b5b7ce1..2e2a221fa9c39bd01edf1cbef07e3cdfea6d56f0 100644 (file)
@@ -25,26 +25,29 @@ static int probe_minix_pt(blkid_probe pr,
        int i;
 
        data = blkid_probe_get_sector(pr, 0);
-       if (!data)
+       if (!data) {
+               if (errno)
+                       return -errno;
                goto nothing;
+       }
 
        ls = blkid_probe_get_partlist(pr);
        if (!ls)
-               goto err;
+               goto nothing;
 
        /* Parent is required, because Minix uses the same PT as DOS and
         * difference is only in primary partition (parent) type.
         */
        parent = blkid_partlist_get_parent(ls);
        if (!parent)
-               goto nothing;
+               goto err;
 
        if (blkid_partition_get_type(parent) != MBR_MINIX_PARTITION)
                goto nothing;
 
        if (blkid_partitions_need_typeonly(pr))
                /* caller does not ask for details about partitions */
-               return 0;
+               return BLKID_PROBE_OK;
 
        tab = blkid_partlist_new_parttable(ls, "minix", MBR_PT_OFFSET);
        if (!tab)
@@ -77,12 +80,12 @@ static int probe_minix_pt(blkid_probe pr,
                blkid_partition_set_flags(par, p->boot_ind);
        }
 
-       return 0;
+       return BLKID_PROBE_OK;
 
 nothing:
-       return 1;
+       return BLKID_PROBE_NONE;
 err:
-       return -1;
+       return -ENOMEM;
 }
 
 /* same as DOS */
index 36dda380c8343485abfe4c5972e87ce59ebea363..4446e5327e24b22ada81f35c43097b9b4eae2618 100644 (file)
@@ -25,8 +25,11 @@ static int probe_sgi_pt(blkid_probe pr,
        int i;
 
        l = (struct sgi_disklabel *) blkid_probe_get_sector(pr, 0);
-       if (!l)
+       if (!l) {
+               if (errno)
+                       return -errno;
                goto nothing;
+       }
 
        if (sgi_pt_checksum(l)) {
                DBG(LOWPROBE, blkid_debug(
@@ -36,11 +39,11 @@ static int probe_sgi_pt(blkid_probe pr,
 
        if (blkid_partitions_need_typeonly(pr))
                /* caller does not ask for details about partitions */
-               return 0;
+               return BLKID_PROBE_OK;
 
        ls = blkid_probe_get_partlist(pr);
        if (!ls)
-               goto err;
+               goto nothing;
 
        tab = blkid_partlist_new_parttable(ls, "sgi", 0);
        if (!tab)
@@ -63,12 +66,12 @@ static int probe_sgi_pt(blkid_probe pr,
                blkid_partition_set_type(par, type);
        }
 
-       return 0;
+       return BLKID_PROBE_OK;
 
 nothing:
-       return 1;
+       return BLKID_PROBE_NONE;
 err:
-       return -1;
+       return -ENOMEM;
 }
 
 const struct blkid_idinfo sgi_pt_idinfo =
index 4e08caf206d34e1e4ada6fd4c8b90c0dfcb0883e..16ad0f14ef16eebe281a95b8c1bda1bd5172a971 100644 (file)
@@ -69,8 +69,11 @@ static int probe_solaris_pt(blkid_probe pr,
        uint16_t nparts;
 
        l = (struct solaris_vtoc *) blkid_probe_get_sector(pr, SOLARIS_SECTOR);
-       if (!l)
+       if (!l) {
+               if (errno)
+                       return -errno;
                goto nothing;
+       }
 
        if (le32_to_cpu(l->v_version) != 1) {
                DBG(LOWPROBE, blkid_debug(
@@ -81,11 +84,11 @@ static int probe_solaris_pt(blkid_probe pr,
 
        if (blkid_partitions_need_typeonly(pr))
                /* caller does not ask for details about partitions */
-               return 0;
+               return BLKID_PROBE_OK;
 
        ls = blkid_probe_get_partlist(pr);
        if (!ls)
-               goto err;
+               goto nothing;
 
        parent = blkid_partlist_get_parent(ls);
 
@@ -126,12 +129,12 @@ static int probe_solaris_pt(blkid_probe pr,
                blkid_partition_set_flags(par, le16_to_cpu(p->s_flag));
        }
 
-       return 0;
+       return BLKID_PROBE_OK;
 
 nothing:
-       return 1;
+       return BLKID_PROBE_NONE;
 err:
-       return -1;
+       return -ENOMEM;
 }
 
 const struct blkid_idinfo solaris_x86_pt_idinfo =
index ba7ca3a5e7583df3728c88bd277ebc11049b88d2..306a758968c3bcbb2aa8f4489394a3c43495b11b 100644 (file)
@@ -27,8 +27,11 @@ static int probe_sun_pt(blkid_probe pr,
        int i, use_vtoc;
 
        l = (struct sun_disklabel *) blkid_probe_get_sector(pr, 0);
-       if (!l)
+       if (!l) {
+               if (errno)
+                       return -errno;
                goto nothing;
+       }
 
        if (sun_pt_checksum(l)) {
                DBG(LOWPROBE, blkid_debug(
@@ -38,11 +41,11 @@ static int probe_sun_pt(blkid_probe pr,
 
        if (blkid_partitions_need_typeonly(pr))
                /* caller does not ask for details about partitions */
-               return 0;
+               return BLKID_PROBE_OK;
 
        ls = blkid_probe_get_partlist(pr);
        if (!ls)
-               goto err;
+               goto nothing;
 
        tab = blkid_partlist_new_parttable(ls, "sun", 0);
        if (!tab)
@@ -76,7 +79,7 @@ static int probe_sun_pt(blkid_probe pr,
                uint16_t type = 0, flags = 0;
                blkid_partition par;
 
-                start = be32_to_cpu(p->start_cylinder) * spc;
+               start = be32_to_cpu(p->start_cylinder) * spc;
                size = be32_to_cpu(p->num_sectors);
                if (use_vtoc) {
                        type = be16_to_cpu(l->vtoc.infos[i].id);
@@ -96,12 +99,12 @@ static int probe_sun_pt(blkid_probe pr,
                if (flags)
                        blkid_partition_set_flags(par, flags);
        }
-       return 0;
+       return BLKID_PROBE_OK;
 
 nothing:
-       return 1;
+       return BLKID_PROBE_NONE;
 err:
-       return -1;
+       return -ENOMEM;
 }
 
 
index 853ae6eedbd722db89eb1904f56f4c9fdd97c917..9c060be1df4a8c39038fece88f0b609c8482d519 100644 (file)
@@ -44,8 +44,11 @@ static int probe_ultrix_pt(blkid_probe pr,
        int i;
 
        data = blkid_probe_get_sector(pr, ULTRIX_SECTOR);
-       if (!data)
+       if (!data) {
+               if (errno)
+                       return -errno;
                goto nothing;
+       }
 
        l = (struct ultrix_disklabel *) (data + ULTRIX_OFFSET);
 
@@ -59,11 +62,11 @@ static int probe_ultrix_pt(blkid_probe pr,
 
        if (blkid_partitions_need_typeonly(pr))
                /* caller does not ask for details about partitions */
-               return 0;
+               return BLKID_PROBE_OK;
 
        ls = blkid_probe_get_partlist(pr);
        if (!ls)
-               goto err;
+               goto nothing;
 
        tab = blkid_partlist_new_parttable(ls, "ultrix", 0);
        if (!tab)
@@ -80,11 +83,11 @@ static int probe_ultrix_pt(blkid_probe pr,
                }
        }
 
-       return 0;
+       return BLKID_PROBE_OK;
 nothing:
-       return 1;
+       return BLKID_PROBE_NONE;
 err:
-       return -1;
+       return -ENOMEM;
 }
 
 const struct blkid_idinfo ultrix_pt_idinfo =
index ce176b8d090c01ed940dcabc48071329c423f21a..81393fdc9ca32124f1de449dfa05fd4514fc68bd 100644 (file)
@@ -106,19 +106,22 @@ static int probe_unixware_pt(blkid_probe pr,
 
        l = (struct unixware_disklabel *)
                        blkid_probe_get_sector(pr, UNIXWARE_SECTOR);
-       if (!l)
+       if (!l) {
+               if (errno)
+                       return -errno;
                goto nothing;
+       }
 
        if (le32_to_cpu(l->vtoc.v_magic) != UNIXWARE_VTOCMAGIC)
                goto nothing;
 
        if (blkid_partitions_need_typeonly(pr))
                /* caller does not ask for details about partitions */
-               return 0;
+               return BLKID_PROBE_OK;
 
        ls = blkid_probe_get_partlist(pr);
        if (!ls)
-               goto err;
+               goto nothing;
 
        parent = blkid_partlist_get_parent(ls);
 
@@ -161,12 +164,12 @@ static int probe_unixware_pt(blkid_probe pr,
                blkid_partition_set_flags(par, flg);
        }
 
-       return 0;
+       return BLKID_PROBE_OK;
 
 nothing:
-       return 1;
+       return BLKID_PROBE_NONE;
 err:
-       return -1;
+       return -ENOMEM;
 }
 
 
index 02e900df0dd494544dd4a20393a622852993e949..65fd5b8b42178e717a3ca1bf14d99149b4143d67 100644 (file)
@@ -80,10 +80,10 @@ static int probe_adraid(blkid_probe pr,
        struct adaptec_metadata *ad;
 
        if (pr->size < 0x10000)
-               return -1;
+               return BLKID_PROBE_NONE;
 
        if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
-               return -1;
+               return BLKID_PROBE_NONE;
 
        off = ((pr->size / 0x200)-1) * 0x200;
        ad = (struct adaptec_metadata *)
@@ -91,17 +91,19 @@ static int probe_adraid(blkid_probe pr,
                                        off,
                                        sizeof(struct adaptec_metadata));
        if (!ad)
-               return -1;
+               return errno ? -errno : BLKID_PROBE_NONE;;
+
        if (ad->smagic != be32_to_cpu(AD_SIGNATURE))
-               return -1;
+               return BLKID_PROBE_NONE;
        if (ad->b0idcode != be32_to_cpu(AD_MAGIC))
-               return -1;
+               return BLKID_PROBE_NONE;
        if (blkid_probe_sprintf_version(pr, "%u", ad->resver) != 0)
-               return -1;
+               return BLKID_PROBE_NONE;
        if (blkid_probe_set_magic(pr, off, sizeof(ad->b0idcode),
                                (unsigned char *) &ad->b0idcode))
-               return -1;
-       return 0;
+               return BLKID_PROBE_NONE;
+
+       return BLKID_PROBE_OK;
 }
 
 const struct blkid_idinfo adraid_idinfo = {
index 303f7eeb987506722c3d4b248953f3a934011df7..b3e397ba1efcd0fc33fd4e8f20769905086937fc 100644 (file)
@@ -104,17 +104,17 @@ static int probe_bcache (blkid_probe pr, const struct blkid_idmag *mag)
 
        bcs = blkid_probe_get_sb(pr, mag, struct bcache_super_block);
        if (!bcs)
-               return -1;
+               return errno ? -errno : BLKID_PROBE_NONE;
 
        if (le64_to_cpu(bcs->offset) != BCACHE_SB_OFF / 512)
-               return 1;
+               return BLKID_PROBE_NONE;
        if (!blkid_probe_verify_csum(pr, bcache_crc64(bcs), le64_to_cpu(bcs->csum)))
-               return 1;
+               return BLKID_PROBE_NONE;
 
        if (blkid_probe_set_uuid(pr, bcs->uuid) < 0)
-               return -1;
+               return BLKID_PROBE_NONE;
 
-       return 0;
+       return BLKID_PROBE_OK;
 };
 
 const struct blkid_idinfo bcache_idinfo =
index 452da1ecdd3c0e1761821a53395adcbddf3e9bdc..e4453bc1779718a34bc7567cb577f60c32b54f63 100644 (file)
@@ -261,21 +261,23 @@ static int64_t get_key_value(blkid_probe pr, const struct befs_super_block *bs,
        int64_t node_pointer;
        int32_t first, last, mid, cmp;
 
+       errno = 0;
        bh = (struct bplustree_header *) get_tree_node(pr, bs, &bi->data, 0,
                                        sizeof(struct bplustree_header), fs_le);
        if (!bh)
-               return -1;
+               return errno ? -errno : -ENOENT;
 
        if ((int32_t) FS32_TO_CPU(bh->magic, fs_le) != BPLUSTREE_MAGIC)
-               return -1;
+               return -ENOENT;
 
        node_pointer = FS64_TO_CPU(bh->root_node_pointer, fs_le);
 
        do {
+               errno = 0;
                bn = (struct bplustree_node *) get_tree_node(pr, bs, &bi->data,
                        node_pointer, FS32_TO_CPU(bh->node_size, fs_le), fs_le);
                if (!bn)
-                       return -1;
+                       return errno ? -errno : -ENOENT;
 
                keylengths = (uint16_t *) ((uint8_t *) bn
                                + ((sizeof(struct bplustree_node)
@@ -336,10 +338,10 @@ static int get_uuid(blkid_probe pr, const struct befs_super_block *bs,
 
        bi = (struct befs_inode *) get_block_run(pr, bs, &bs->root_dir, fs_le);
        if (!bi)
-               return -1;
+               return errno ? -errno : BLKID_PROBE_NONE;
 
        if (FS32_TO_CPU(bi->magic1, fs_le) != INODE_MAGIC1)
-               return -1;
+               return BLKID_PROBE_NONE;
 
        sd = (struct small_data *) bi->small_data;
 
@@ -376,24 +378,24 @@ static int get_uuid(blkid_probe pr, const struct befs_super_block *bs,
                bi = (struct befs_inode *) get_block_run(pr, bs,
                                                        &bi->attributes, fs_le);
                if (!bi)
-                       return -1;
+                       return errno ? -errno : BLKID_PROBE_NONE;
 
                if (FS32_TO_CPU(bi->magic1, fs_le) != INODE_MAGIC1)
-                       return -1;
+                       return BLKID_PROBE_NONE;
 
                value = get_key_value(pr, bs, bi, KEY_NAME, fs_le);
-
                if (value < 0)
-                       return value;
+                       return value == -ENOENT ? BLKID_PROBE_NONE : value;
+
                else if (value > 0) {
                        bi = (struct befs_inode *) blkid_probe_get_buffer(pr,
                                value << FS32_TO_CPU(bs->block_shift, fs_le),
                                FS32_TO_CPU(bs->block_size, fs_le));
                        if (!bi)
-                               return -1;
+                               return errno ? -errno : BLKID_PROBE_NONE;
 
                        if (FS32_TO_CPU(bi->magic1, fs_le) != INODE_MAGIC1)
-                               return -1;
+                               return 1;
 
                        if (FS32_TO_CPU(bi->type, fs_le) == B_UINT64_TYPE
                                && FS64_TO_CPU(bi->data.size, fs_le) == KEY_SIZE
@@ -404,7 +406,7 @@ static int get_uuid(blkid_probe pr, const struct befs_super_block *bs,
                                attr_data = (uint64_t *) get_block_run(pr, bs,
                                                &bi->data.direct[0], fs_le);
                                if (!attr_data)
-                                       return -1;
+                                       return errno ? -errno : BLKID_PROBE_NONE;
 
                                *uuid = *attr_data;
                        }
@@ -424,7 +426,7 @@ static int probe_befs(blkid_probe pr, const struct blkid_idmag *mag)
                                        mag->sboff - B_OS_NAME_LENGTH,
                                        sizeof(struct befs_super_block));
        if (!bs)
-               return -1;
+               return errno ? -errno : BLKID_PROBE_NONE;
 
        if (le32_to_cpu(bs->magic1) == SUPER_BLOCK_MAGIC1
                && le32_to_cpu(bs->magic2) == SUPER_BLOCK_MAGIC2
@@ -439,11 +441,11 @@ static int probe_befs(blkid_probe pr, const struct blkid_idmag *mag)
                fs_le = 0;
                version = "big-endian";
        } else
-               return -1;
+               return BLKID_PROBE_NONE;
 
        ret = get_uuid(pr, bs, &volume_id, fs_le);
 
-       if (ret < 0)
+       if (ret != 0)
                return ret;
 
        /*
@@ -459,7 +461,7 @@ static int probe_befs(blkid_probe pr, const struct blkid_idmag *mag)
                blkid_probe_sprintf_uuid(pr, (unsigned char *) &volume_id,
                                        sizeof(volume_id), "%016" PRIx64,
                                        FS64_TO_CPU(volume_id, fs_le));
-       return 0;
+       return BLKID_PROBE_OK;
 }
 
 const struct blkid_idinfo befs_idinfo =
index 434be34bcd1a5dd9bcb0fdfc05f53a506863d354..7ce3dfff86d643ca52a3fb917a09a4b30606ba2f 100644 (file)
@@ -65,7 +65,7 @@ static int probe_btrfs(blkid_probe pr, const struct blkid_idmag *mag)
 
        bfs = blkid_probe_get_sb(pr, mag, struct btrfs_super_block);
        if (!bfs)
-               return -1;
+               return errno ? -errno : 1;
 
        if (*bfs->label)
                blkid_probe_set_label(pr,
index b58ed08cb1052a392641ec7ca8ef55143c8b89c2..6d01b0baa8026e43b5582996c83aa917ff6d0a54 100644 (file)
@@ -40,7 +40,7 @@ static int probe_cramfs(blkid_probe pr, const struct blkid_idmag *mag)
 
        cs = blkid_probe_get_sb(pr, mag, struct cramfs_super);
        if (!cs)
-               return -1;
+               return errno ? -errno : 1;
 
        blkid_probe_set_label(pr, cs->name, sizeof(cs->name));
        return 0;
index 24df421d14ec7ba9b6a180f29aeab63728f4cfe4..b907a9f8cedfc0ef9effa923284280a43bb7da9e 100644 (file)
@@ -81,7 +81,7 @@ static int probe_ddf(blkid_probe pr,
        uint64_t off, lba;
 
        if (pr->size < 0x30000)
-               return -1;
+               return 1;
 
        for (i = 0; i < ARRAY_SIZE(hdrs); i++) {
                off = ((pr->size / 0x200) - hdrs[i]) * 0x200;
@@ -90,8 +90,7 @@ static int probe_ddf(blkid_probe pr,
                                        off,
                                        sizeof(struct ddf_header));
                if (!ddf)
-                       return -1;
-
+                       return errno ? -errno : 1;
                if (ddf->signature == cpu_to_be32(DDF_MAGIC) ||
                    ddf->signature == cpu_to_le32(DDF_MAGIC))
                        break;
@@ -99,7 +98,7 @@ static int probe_ddf(blkid_probe pr,
        }
 
        if (!ddf)
-               return -1;
+               return 1;
 
        lba = ddf->signature == cpu_to_be32(DDF_MAGIC) ?
                        be64_to_cpu(ddf->primary_lba) :
@@ -111,8 +110,12 @@ static int probe_ddf(blkid_probe pr,
 
                buf = blkid_probe_get_buffer(pr,
                                        lba << 9, sizeof(ddf->signature));
-               if (!buf || memcmp(buf, &ddf->signature, 4))
-                       return -1;
+               if (!buf) {
+                       if (errno)
+                               return -errno;
+                       if (memcmp(buf, &ddf->signature, 4))
+                               return 1;
+               }
        }
 
        blkid_probe_strncpy_uuid(pr, ddf->guid, sizeof(ddf->guid));
@@ -121,11 +124,11 @@ static int probe_ddf(blkid_probe pr,
        *(version + sizeof(ddf->ddf_rev)) = '\0';
 
        if (blkid_probe_set_version(pr, version) != 0)
-               return -1;
+               return 1;
        if (blkid_probe_set_magic(pr, off,
                        sizeof(ddf->signature),
                        (unsigned char *) &ddf->signature))
-               return -1;
+               return 1;
        return 0;
 }
 
index 43e544e896d001845abd80c2e94a5b77bcbd21d2..e88e9f353a411da5df16a8b567360b521827702f 100644 (file)
@@ -75,18 +75,18 @@ static int probe_drbd(blkid_probe pr,
 
        /* Small devices cannot be drbd (?) */
        if (pr->size < 0x10000)
-               return -1;
+               return 1;
 
        md = (struct md_on_disk_08 *)
                        blkid_probe_get_buffer(pr,
                                        off,
                                        sizeof(struct md_on_disk_08));
        if (!md)
-               return -1;
+               return errno ? -errno : 1;
 
        if (be32_to_cpu(md->magic) != DRBD_MD_MAGIC_08 &&
                        be32_to_cpu(md->magic) != DRBD_MD_MAGIC_84_UNCLEAN)
-               return -1;
+               return 1;
 
        /*
         * DRBD does not have "real" uuids; the following resembles DRBD's
@@ -102,7 +102,7 @@ static int probe_drbd(blkid_probe pr,
                                off + offsetof(struct md_on_disk_08, magic),
                                sizeof(md->magic),
                                (unsigned char *) &md->magic))
-               return -1;
+               return 1;
 
        return 0;
 }
index afe4725a06724ff0092c20eaceefe801aa0d1531..af597224f60b8e9352d8bf6ae9f84254e28e9517 100644 (file)
@@ -33,7 +33,7 @@ static int probe_drbdproxy_datalog(blkid_probe pr,
 
        lh = (struct log_header_t *) blkid_probe_get_buffer(pr, 0, sizeof(*lh));
        if (!lh)
-               return -1;
+               return errno ? -errno : 1;
 
        blkid_probe_set_uuid(pr, lh->uuid);
        blkid_probe_sprintf_version(pr, "v%jd", le64_to_cpu(lh->version));
index 215c67114a859888295f14d48c9cbc1488574e77..b52656036be5f6e6f86743ed8a76f6b6af4b6218 100644 (file)
@@ -115,12 +115,14 @@ static int probe_exfat(blkid_probe pr, const struct blkid_idmag *mag)
 
        sb = blkid_probe_get_sb(pr, mag, struct exfat_super_block);
        if (!sb)
-               return -1;
+               return errno ? -errno : BLKID_PROBE_NONE;
 
        label = find_label(pr, sb);
        if (label)
                blkid_probe_set_utf8label(pr, label->name,
                                min(label->length * 2, 30), BLKID_ENC_UTF16LE);
+       else if (errno)
+               return -errno;
 
        blkid_probe_sprintf_uuid(pr, sb->volume_serial, 4,
                        "%02hhX%02hhX-%02hhX%02hhX",
@@ -130,7 +132,7 @@ static int probe_exfat(blkid_probe pr, const struct blkid_idmag *mag)
        blkid_probe_sprintf_version(pr, "%u.%u",
                        sb->version.major, sb->version.minor);
 
-       return 0;
+       return BLKID_PROBE_OK;
 }
 
 const struct blkid_idinfo exfat_idinfo =
index 6f6d8a6bc399d42cec1dde0735eaa5091b7b6a28..1de60221471f924e51abf2d87a34ffb63575e424 100644 (file)
@@ -198,9 +198,9 @@ static int probe_jbd(blkid_probe pr,
 
        es = ext_get_super(pr, NULL, &fi, NULL);
        if (!es)
-               return -BLKID_ERR_PARAM;
+               return errno ? -errno : 1;
        if (!(fi & EXT3_FEATURE_INCOMPAT_JOURNAL_DEV))
-               return -BLKID_ERR_PARAM;
+               return 1;
 
        ext_get_info(pr, 2, es);
        blkid_probe_set_uuid_as(pr, es->s_uuid, "LOGUUID");
@@ -216,16 +216,16 @@ static int probe_ext2(blkid_probe pr,
 
        es = ext_get_super(pr, &fc, &fi, &frc);
        if (!es)
-               return -BLKID_ERR_PARAM;
+               return errno ? -errno : 1;
 
        /* Distinguish between ext3 and ext2 */
        if (fc & EXT3_FEATURE_COMPAT_HAS_JOURNAL)
-               return -BLKID_ERR_PARAM;
+               return 1;
 
        /* Any features which ext2 doesn't understand */
        if ((frc & EXT2_FEATURE_RO_COMPAT_UNSUPPORTED) ||
            (fi  & EXT2_FEATURE_INCOMPAT_UNSUPPORTED))
-               return -BLKID_ERR_PARAM;
+               return 1;
 
        ext_get_info(pr, 2, es);
        return 0;
@@ -239,16 +239,16 @@ static int probe_ext3(blkid_probe pr,
 
        es = ext_get_super(pr, &fc, &fi, &frc);
        if (!es)
-               return -BLKID_ERR_PARAM;
+               return errno ? -errno : 1;
 
        /* ext3 requires journal */
        if (!(fc & EXT3_FEATURE_COMPAT_HAS_JOURNAL))
-               return -BLKID_ERR_PARAM;
+               return 1;
 
        /* Any features which ext3 doesn't understand */
        if ((frc & EXT3_FEATURE_RO_COMPAT_UNSUPPORTED) ||
            (fi  & EXT3_FEATURE_INCOMPAT_UNSUPPORTED))
-               return -BLKID_ERR_PARAM;
+               return 1;
 
        ext_get_info(pr, 3, es);
        return 0;
@@ -263,14 +263,14 @@ static int probe_ext4dev(blkid_probe pr,
 
        es = ext_get_super(pr, &fc, &fi, &frc);
        if (!es)
-               return -BLKID_ERR_PARAM;
+               return errno ? -errno : 1;
 
        /* Distinguish from jbd */
        if (fi & EXT3_FEATURE_INCOMPAT_JOURNAL_DEV)
-               return -BLKID_ERR_PARAM;
+               return 1;
 
        if (!(le32_to_cpu(es->s_flags) & EXT2_FLAGS_TEST_FILESYS))
-               return -BLKID_ERR_PARAM;
+               return 1;
 
        ext_get_info(pr, 4, es);
        return 0;
@@ -284,16 +284,16 @@ static int probe_ext4(blkid_probe pr,
 
        es = ext_get_super(pr, &fc, &fi, &frc);
        if (!es)
-               return -1;
+               return errno ? -errno : 1;
 
        /* Distinguish from jbd */
        if (fi & EXT3_FEATURE_INCOMPAT_JOURNAL_DEV)
-               return -BLKID_ERR_PARAM;
+               return 1;
 
        /* Ext4 has at least one feature which ext3 doesn't understand */
        if (!(frc & EXT3_FEATURE_RO_COMPAT_UNSUPPORTED) &&
            !(fi  & EXT3_FEATURE_INCOMPAT_UNSUPPORTED))
-               return -BLKID_ERR_PARAM;
+               return 1;
 
        /*
         * If the filesystem is a OK for use by in-development
@@ -306,7 +306,7 @@ static int probe_ext4(blkid_probe pr,
         * ext4dev.
         */
        if (le32_to_cpu(es->s_flags) & EXT2_FLAGS_TEST_FILESYS)
-               return -BLKID_ERR_PARAM;
+               return 1;
 
        ext_get_info(pr, 4, es);
        return 0;
index 1543a7a8bc958642e69ba6690b376f43a7d75c35..2bf0f5e98028036dc69b40380e2cb613f21bd8ed 100644 (file)
@@ -62,7 +62,7 @@ static int probe_f2fs(blkid_probe pr, const struct blkid_idmag *mag)
 
        sb = blkid_probe_get_sb(pr, mag, struct f2fs_super_block);
        if (!sb)
-               return -1;
+               return errno ? -errno : 1;
 
        major = le16_to_cpu(sb->major_ver);
        minor = le16_to_cpu(sb->minor_ver);
index b2c016304430728f41dba69fe07ca949f7a4415c..1b265581d3b1eee6e55d7d2d614d510910068039 100644 (file)
@@ -64,7 +64,7 @@ static int probe_gfs(blkid_probe pr, const struct blkid_idmag *mag)
 
        sbd = blkid_probe_get_sb(pr, mag, struct gfs2_sb);
        if (!sbd)
-               return -1;
+               return errno ? -errno : 1;
 
        if (be32_to_cpu(sbd->sb_fs_format) == GFS_FORMAT_FS &&
            be32_to_cpu(sbd->sb_multihost_format) == GFS_FORMAT_MULTI)
@@ -78,7 +78,7 @@ static int probe_gfs(blkid_probe pr, const struct blkid_idmag *mag)
                return 0;
        }
 
-       return -1;
+       return 1;
 }
 
 static int probe_gfs2(blkid_probe pr, const struct blkid_idmag *mag)
@@ -87,7 +87,7 @@ static int probe_gfs2(blkid_probe pr, const struct blkid_idmag *mag)
 
        sbd = blkid_probe_get_sb(pr, mag, struct gfs2_sb);
        if (!sbd)
-               return -1;
+               return errno ? -errno : 1;
 
        if (be32_to_cpu(sbd->sb_fs_format) == GFS2_FORMAT_FS &&
            be32_to_cpu(sbd->sb_multihost_format) == GFS2_FORMAT_MULTI)
@@ -100,7 +100,7 @@ static int probe_gfs2(blkid_probe pr, const struct blkid_idmag *mag)
                blkid_probe_set_version(pr, "1");
                return 0;
        }
-       return -1;
+       return 1;
 }
 
 const struct blkid_idinfo gfs_idinfo =
index 6d960e9e71f09d5cf8cfae4cad22992abfd95998..fe57241c0228f3b91bb611c14a3e7cb48b90ef5f 100644 (file)
@@ -154,7 +154,7 @@ static int probe_hfs(blkid_probe pr, const struct blkid_idmag *mag)
 
        hfs = blkid_probe_get_sb(pr, mag, struct hfs_mdb);
        if (!hfs)
-               return -1;
+               return errno ? -errno : 1;
 
        if ((memcmp(hfs->embed_sig, "H+", 2) == 0) ||
            (memcmp(hfs->embed_sig, "HX", 2) == 0))
@@ -193,7 +193,7 @@ static int probe_hfsplus(blkid_probe pr, const struct blkid_idmag *mag)
 
        sbd = blkid_probe_get_sb(pr, mag, struct hfs_mdb);
        if (!sbd)
-               return -1;
+               return errno ? -errno : 1;
 
        /* Check for a HFS+ volume embedded in a HFS volume */
        if (memcmp(sbd->signature, "BD", 2) == 0) {
@@ -218,7 +218,7 @@ static int probe_hfsplus(blkid_probe pr, const struct blkid_idmag *mag)
                                struct hfsplus_vol_header);
 
        if (!hfsplus)
-               return -1;
+               return errno ? -errno : 1;
 
        if ((memcmp(hfsplus->signature, "H+", 2) != 0) &&
            (memcmp(hfsplus->signature, "HX", 2) != 0))
@@ -228,7 +228,7 @@ static int probe_hfsplus(blkid_probe pr, const struct blkid_idmag *mag)
 
        blocksize = be32_to_cpu(hfsplus->blocksize);
        if (blocksize < HFSPLUS_SECTOR_SIZE)
-               return -1;
+               return 1;
 
        memcpy(extents, hfsplus->cat_file.extents, sizeof(extents));
        cat_block = be32_to_cpu(extents[0].start_block);
@@ -236,7 +236,7 @@ static int probe_hfsplus(blkid_probe pr, const struct blkid_idmag *mag)
        buf = blkid_probe_get_buffer(pr,
                        off + ((blkid_loff_t) cat_block * blocksize), 0x2000);
        if (!buf)
-               return 0;
+               return errno ? -errno : 0;
 
        bnode = (struct hfsplus_bheader_record *)
                &buf[sizeof(struct hfsplus_bnode_descriptor)];
@@ -271,7 +271,7 @@ static int probe_hfsplus(blkid_probe pr, const struct blkid_idmag *mag)
                                (blkid_loff_t) off + leaf_off,
                                leaf_node_size);
        if (!buf)
-               return 0;
+               return errno ? -errno : 0;
 
        descr = (struct hfsplus_bnode_descriptor *) buf;
        record_count = be16_to_cpu(descr->num_recs);
index 0b41344ae3b2956d248f5f141d64173ff839f2d7..ad3b538cdca8f877a4f30c3101cec8485b856c1e 100644 (file)
@@ -30,9 +30,9 @@ static int probe_highpoint45x(blkid_probe pr,
        uint32_t magic;
 
        if (pr->size < 0x10000)
-               return -1;
+               return 1;
        if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
-               return -1;
+               return 1;
 
        off = ((pr->size / 0x200) - 11) * 0x200;
        hpt = (struct hpt45x_metadata *)
@@ -40,13 +40,13 @@ static int probe_highpoint45x(blkid_probe pr,
                                        off,
                                        sizeof(struct hpt45x_metadata));
        if (!hpt)
-               return -1;
+               return errno ? -errno : 1;
        magic = le32_to_cpu(hpt->magic);
        if (magic != HPT45X_MAGIC_OK && magic != HPT45X_MAGIC_BAD)
-               return -1;
+               return 1;
        if (blkid_probe_set_magic(pr, off, sizeof(hpt->magic),
                                (unsigned char *) &hpt->magic))
-               return -1;
+               return 1;
        return 0;
 }
 
@@ -54,7 +54,7 @@ static int probe_highpoint37x(blkid_probe pr,
                const struct blkid_idmag *mag __attribute__((__unused__)))
 {
        if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
-               return -1;
+               return 1;
        return 0;
 }
 
index f9b851a474158413b5e015af72cfd9a3d139139f..0565d370cf8d16957f96ada330ddcf63e0aa7368 100644 (file)
@@ -68,7 +68,7 @@ static int probe_hpfs(blkid_probe pr, const struct blkid_idmag *mag)
        /* super block */
        hs = blkid_probe_get_sb(pr, mag, struct hpfs_super_block);
        if (!hs)
-               return -1;
+               return errno ? -errno : 1;
        version = hs->version;
 
        /* spare super block */
@@ -77,9 +77,9 @@ static int probe_hpfs(blkid_probe pr, const struct blkid_idmag *mag)
                                HPFS_SBSPARE_OFFSET,
                                sizeof(struct hpfs_spare_super));
        if (!hss)
-               return -1;
+               return errno ? -errno : 1;
        if (memcmp(hss->magic, "\x49\x18\x91\xf9", 4) != 0)
-               return -1;
+               return 1;
 
        /* boot block (with UUID and LABEL) */
        hbb = (struct hpfs_boot_block *)
@@ -87,7 +87,7 @@ static int probe_hpfs(blkid_probe pr, const struct blkid_idmag *mag)
                                0,
                                sizeof(struct hpfs_boot_block));
        if (!hbb)
-               return -1;
+               return errno ? -errno : 1;
        if (memcmp(hbb->magic, "\x55\xaa", 2) == 0 &&
            memcmp(hbb->sig_hpfs, "HPFS", 4) == 0 &&
            hbb->sig_28h == 0x28) {
index 148587b3b0f593550f52dde4a8c1ea8c642378f3..d099467a22530799d39e11f9812700b44cbafeda 100644 (file)
@@ -100,7 +100,7 @@ static int probe_iso9660_hsfs(blkid_probe pr, const struct blkid_idmag *mag)
 
        iso = blkid_probe_get_sb(pr, mag, struct high_sierra_volume_descriptor);
        if (!iso)
-               return -1;
+               return errno ? -errno : 1;
 
        blkid_probe_set_version(pr, "High Sierra");
        blkid_probe_set_label(pr, iso->volume_id, sizeof(iso->volume_id));
@@ -178,7 +178,7 @@ int probe_iso9660(blkid_probe pr, const struct blkid_idmag *mag)
 
        iso = blkid_probe_get_sb(pr, mag, struct iso_volume_descriptor);
        if (!iso)
-               return -1;
+               return errno ? -errno : 1;
 
        memcpy(label, iso->volume_id, sizeof(label));
 
index 755c1b65254a54678d5bba0719fab7aac01d734d..065c2b208d143a6699b5769b6ed3c77b4f0791de 100644 (file)
@@ -33,9 +33,9 @@ static int probe_iswraid(blkid_probe pr,
        struct isw_metadata *isw;
 
        if (pr->size < 0x10000)
-               return -1;
+               return 1;
        if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
-               return -1;
+               return 1;
 
        off = ((pr->size / 0x200) - 2) * 0x200;
        isw = (struct isw_metadata *)
@@ -43,15 +43,16 @@ static int probe_iswraid(blkid_probe pr,
                                        off,
                                        sizeof(struct isw_metadata));
        if (!isw)
-               return -1;
+               return errno ? -errno : 1;
+
        if (memcmp(isw->sig, ISW_SIGNATURE, sizeof(ISW_SIGNATURE)-1) != 0)
-               return -1;
+               return 1;
        if (blkid_probe_sprintf_version(pr, "%6s",
                        &isw->sig[sizeof(ISW_SIGNATURE)-1]) != 0)
-               return -1;
+               return 1;
        if (blkid_probe_set_magic(pr, off, sizeof(isw->sig),
                                (unsigned char *) isw->sig))
-               return -1;
+               return 1;
        return 0;
 }
 
index 78c018c151aad4153a114400eb2574a2a6354c12..ac684d8cd75cee51518cd702c523d91be808ccc0 100644 (file)
@@ -40,7 +40,7 @@ static int probe_jfs(blkid_probe pr, const struct blkid_idmag *mag)
 
        js = blkid_probe_get_sb(pr, mag, struct jfs_super_block);
        if (!js)
-               return -1;
+               return errno ? -errno : 1;
        if (le32_to_cpu(js->js_bsize) != (1U << le16_to_cpu(js->js_l2bsize)))
                return 1;
        if (le32_to_cpu(js->js_pbsize) != (1U << le16_to_cpu(js->js_l2pbsize)))
index c7080780f422ee6fe6e0ae65fb0dc779a88949af..ca79867330eb1bc65b0fbf297f67f33abb453bea 100644 (file)
@@ -32,9 +32,9 @@ static int probe_jmraid(blkid_probe pr,
        struct jm_metadata *jm;
 
        if (pr->size < 0x10000)
-               return -1;
+               return 1;
        if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
-               return -1;
+               return 1;
 
        off = ((pr->size / 0x200) - 1) * 0x200;
        jm = (struct jm_metadata *)
@@ -42,15 +42,16 @@ static int probe_jmraid(blkid_probe pr,
                                off,
                                sizeof(struct jm_metadata));
        if (!jm)
-               return -1;
+               return errno ? -errno : 1;
+
        if (memcmp(jm->signature, JM_SIGNATURE, sizeof(JM_SIGNATURE) - 1) != 0)
-               return -1;
+               return 1;
        if (blkid_probe_sprintf_version(pr, "%u.%u",
                                jm->major_version, jm->minor_version) != 0)
-               return -1;
+               return 1;
        if (blkid_probe_set_magic(pr, off, sizeof(jm->signature),
                                (unsigned char *) jm->signature))
-               return -1;
+               return 1;
        return 0;
 }
 
index a3f9d67d59c2d2757a1f19e83475d945fb4f976f..cf29141c6014c5ce02ce3e5193892d0cee5482bb 100644 (file)
@@ -110,13 +110,13 @@ static int probe_raid0(blkid_probe pr, blkid_loff_t off)
        uint64_t size;
 
        if (pr->size < MD_RESERVED_BYTES)
-               return -1;
+               return 1;
        mdp0 = (struct mdp0_super_block *)
                        blkid_probe_get_buffer(pr,
                                off,
                                sizeof(struct mdp0_super_block));
        if (!mdp0)
-               return -1;
+               return errno ? -errno : 1;
 
        memset(uuid.ints, 0, sizeof(uuid.ints));
 
@@ -173,12 +173,12 @@ static int probe_raid0(blkid_probe pr, blkid_loff_t off)
        }
 
        if (blkid_probe_sprintf_version(pr, "%u.%u.%u", ma, mi, pa) != 0)
-               return -1;
+               return 1;
        if (blkid_probe_set_uuid(pr, (unsigned char *) uuid.bytes) != 0)
-               return -1;
+               return 1;
        if (blkid_probe_set_magic(pr, off, sizeof(mdp0->md_magic),
                                (unsigned char *) &mdp0->md_magic))
-               return -1;
+               return 1;
        return 0;
 }
 
@@ -191,24 +191,24 @@ static int probe_raid1(blkid_probe pr, off_t off)
                                off,
                                sizeof(struct mdp1_super_block));
        if (!mdp1)
-               return -1;
+               return errno ? -errno : 1;
        if (le32_to_cpu(mdp1->magic) != MD_SB_MAGIC)
-               return -1;
+               return 1;
        if (le32_to_cpu(mdp1->major_version) != 1U)
-               return -1;
+               return 1;
        if (le64_to_cpu(mdp1->super_offset) != (uint64_t) off >> 9)
-               return -1;
+               return 1;
        if (blkid_probe_set_uuid(pr, (unsigned char *) mdp1->set_uuid) != 0)
-               return -1;
+               return 1;
        if (blkid_probe_set_uuid_as(pr,
                        (unsigned char *) mdp1->device_uuid, "UUID_SUB") != 0)
-               return -1;
+               return 1;
        if (blkid_probe_set_label(pr, mdp1->set_name,
                                sizeof(mdp1->set_name)) != 0)
-               return -1;
+               return 1;
        if (blkid_probe_set_magic(pr, off, sizeof(mdp1->magic),
                                (unsigned char *) &mdp1->magic))
-               return -1;
+               return 1;
        return 0;
 }
 
@@ -216,35 +216,44 @@ int probe_raid(blkid_probe pr,
                const struct blkid_idmag *mag __attribute__((__unused__)))
 {
        const char *ver = NULL;
+       int ret = BLKID_PROBE_NONE;
 
        if (pr->size > MD_RESERVED_BYTES) {
                /* version 0 at the end of the device */
                uint64_t sboff = (pr->size & ~(MD_RESERVED_BYTES - 1))
-                                - MD_RESERVED_BYTES;
-               if (probe_raid0(pr, sboff) == 0)
-                       return 0;
+                       - MD_RESERVED_BYTES;
+               ret = probe_raid0(pr, sboff);
+               if (ret < 1)
+                       return ret;     /* error */
 
                /* version 1.0 at the end of the device */
                sboff = (pr->size & ~(0x1000 - 1)) - 0x2000;
-               if (probe_raid1(pr, sboff) == 0)
+               ret = probe_raid1(pr, sboff);
+               if (ret < 0)
+                       return ret;     /* error */
+               if (ret == 0)
                        ver = "1.0";
        }
 
        if (!ver) {
                /* version 1.1 at the start of the device */
-               if (probe_raid1(pr, 0) == 0)
+               ret = probe_raid1(pr, 0);
+               if (ret == 0)
                        ver = "1.1";
 
                /* version 1.2 at 4k offset from the start */
-               else if (probe_raid1(pr, 0x1000) == 0)
-                       ver = "1.2";
+               else if (ret == BLKID_PROBE_NONE) {
+                       ret = probe_raid1(pr, 0x1000);
+                       if (ret == 0)
+                               ver = "1.2";
+               }
        }
 
        if (ver) {
                blkid_probe_set_version(pr, ver);
-               return 0;
+               return BLKID_PROBE_OK;
        }
-       return -1;
+       return ret;
 }
 
 
index 56721dd71950604fa322de8ccef3c30bdf4a6c98..697b0fe89bdb8e36497788ebe7c860b69b002997 100644 (file)
@@ -30,9 +30,9 @@ static int probe_lsiraid(blkid_probe pr,
        struct lsi_metadata *lsi;
 
        if (pr->size < 0x10000)
-               return -1;
+               return 1;
        if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
-               return -1;
+               return 1;
 
        off = ((pr->size / 0x200) - 1) * 0x200;
        lsi = (struct lsi_metadata *)
@@ -40,13 +40,13 @@ static int probe_lsiraid(blkid_probe pr,
                                off,
                                sizeof(struct lsi_metadata));
        if (!lsi)
-               return -1;
+               return errno ? -errno : 1;
 
        if (memcmp(lsi->sig, LSI_SIGNATURE, sizeof(LSI_SIGNATURE)-1) != 0)
-               return -1;
+               return 1;
        if (blkid_probe_set_magic(pr, off, sizeof(lsi->sig),
                                (unsigned char *) lsi->sig))
-               return -1;
+               return 1;
        return 0;
 }
 
index f716e31c34c06224f229e5d3c2d7737966a8c3af..00696f28c8e8fbd70709814dbb34ded3f2da0992 100644 (file)
@@ -45,7 +45,7 @@ static int probe_luks(blkid_probe pr, const struct blkid_idmag *mag)
 
        header = blkid_probe_get_sb(pr, mag, struct luks_phdr);
        if (header == NULL)
-               return -1;
+               return errno ? -errno : 1;
 
        blkid_probe_strncpy_uuid(pr, (unsigned char *) header->uuid,
                        sizeof(header->uuid));
index 65c7c35a4f7cb8fe69daa0c3f0b0c07f0f7543dd..3c6df743db9aa3e7a2ebd23a07a14bfd4b4b9aa8 100644 (file)
@@ -82,7 +82,7 @@ static int probe_lvm2(blkid_probe pr, const struct blkid_idmag *mag)
                        mag->kboff << 10,
                        512 + sizeof(struct lvm2_pv_label_header));
        if (!buf)
-               return -1;
+               return errno ? -errno : 1;
 
        /* buf is at 0k or 1k offset; find label inside */
        if (memcmp(buf, "LABELONE", 8) == 0) {
@@ -128,7 +128,7 @@ static int probe_lvm1(blkid_probe pr, const struct blkid_idmag *mag)
 
        label = blkid_probe_get_sb(pr, mag, struct lvm1_pv_label_header);
        if (!label)
-               return -1;
+               return errno ? -errno : 1;
 
        version = le16_to_cpu(label->version);
        if (version != 1 && version != 2)
@@ -163,7 +163,7 @@ static int probe_verity(blkid_probe pr, const struct blkid_idmag *mag)
 
        sb = blkid_probe_get_sb(pr, mag, struct verity_sb);
        if (sb == NULL)
-               return -1;
+               return errno ? -errno : 1;
 
        version = le32_to_cpu(sb->version);
        if (version != 1)
index 0e7cd934f7016aa5c3236c2558262faeb9918dc1..3e80e5b22a8fdba1467eafbc3069582521813a76 100644 (file)
@@ -80,17 +80,17 @@ static int probe_minix(blkid_probe pr, const struct blkid_idmag *mag)
                        max(sizeof(struct minix_super_block),
                            sizeof(struct minix3_super_block)));
        if (!data)
-               return -1;
+               return errno ? -errno : 1;
        version = get_minix_version(data, &swabme);
        if (version < 1)
-               return -1;
+               return 1;
 
        if (version <= 2) {
                struct minix_super_block *sb = (struct minix_super_block *) data;
                int zones, ninodes, imaps, zmaps, firstz;
 
                if (sb->s_imap_blocks == 0 || sb->s_zmap_blocks == 0)
-                       return -1;
+                       return 1;
 
                zones = version == 2 ? minix_swab32(swabme, sb->s_zones) :
                                       minix_swab16(swabme, sb->s_nzones);
@@ -101,15 +101,15 @@ static int probe_minix(blkid_probe pr, const struct blkid_idmag *mag)
 
                /* sanity checks to be sure that the FS is really minix */
                if (imaps * MINIX_BLOCK_SIZE * 8 < ninodes + 1)
-                       return -1;
+                       return 1;
                if (zmaps * MINIX_BLOCK_SIZE * 8 < zones - firstz + 1)
-                       return -1;
+                       return 1;
 
        } else if (version == 3) {
                struct minix3_super_block *sb = (struct minix3_super_block *) data;
 
                if (sb->s_imap_blocks == 0 || sb->s_zmap_blocks == 0)
-                       return -1;
+                       return 1;
        }
 
        /* unfortunately, some parts of ext3 is sometimes possible to
@@ -117,8 +117,10 @@ static int probe_minix(blkid_probe pr, const struct blkid_idmag *mag)
         * string. (For extN magic string and offsets see ext.c.)
         */
        ext = blkid_probe_get_buffer(pr, 0x400 + 0x38, 2);
-       if (ext && memcmp(ext, "\123\357", 2) == 0)
-               return -1;
+       if (!ext)
+               return errno ? -errno : 1;
+       else if (memcmp(ext, "\123\357", 2) == 0)
+               return 1;
 
        blkid_probe_sprintf_version(pr, "%d", version);
        return 0;
index 7ef216254d5f0020d03cbd9a2943e1c75f685105..af81cf5fd350e6327be061e949dcaba31ef44b79 100644 (file)
@@ -71,7 +71,7 @@ static int probe_netware(blkid_probe pr, const struct blkid_idmag *mag)
 
        nw = blkid_probe_get_sb(pr, mag, struct netware_super_block);
        if (!nw)
-               return -1;
+               return errno ? -errno : 1;
 
        blkid_probe_set_uuid(pr, nw->SBH_PoolID);
 
index 24ccf633e6f47163dd7f767009d586f1fc268ea1..894dadf53635b7726f920e1ccc0cb7b00d384597 100644 (file)
@@ -93,12 +93,12 @@ static int probe_nilfs2(blkid_probe pr, const struct blkid_idmag *mag)
        sbp = (struct nilfs_super_block *) blkid_probe_get_buffer(
                        pr, NILFS_SB_OFFSET, sizeof(struct nilfs_super_block));
        if (!sbp)
-               return -1;
+               return errno ? -errno : 1;
        /* backup */
        sbb = (struct nilfs_super_block *) blkid_probe_get_buffer(
                        pr, ((pr->size / 0x200) - 8) * 0x200, sizeof(struct nilfs_super_block));
        if (!sbp)
-               return -1;
+               return errno ? -errno : 1;
 
        /*
         * Compare two super blocks and set 1 in swp if the secondary
index d767cb46dc7c62fec4bb0655de02bfae4ec43b01..41eab26e9aed32ce92ebb7a7eb556325a085c53a 100644 (file)
@@ -91,7 +91,7 @@ static int probe_ntfs(blkid_probe pr, const struct blkid_idmag *mag)
 
        ns = blkid_probe_get_sb(pr, mag, struct ntfs_super_block);
        if (!ns)
-               return -1;
+               return errno ? -errno : 1;
 
        /*
         * Check bios parameters block
@@ -158,7 +158,7 @@ static int probe_ntfs(blkid_probe pr, const struct blkid_idmag *mag)
 
        buf_mft = blkid_probe_get_buffer(pr, off, mft_record_size);
        if (!buf_mft)
-               return 1;
+               return errno ? -errno : 1;
 
        if (memcmp(buf_mft, "FILE", 4))
                return 1;
@@ -167,7 +167,7 @@ static int probe_ntfs(blkid_probe pr, const struct blkid_idmag *mag)
 
        buf_mft = blkid_probe_get_buffer(pr, off, mft_record_size);
        if (!buf_mft)
-               return 1;
+               return errno ? -errno : 1;
 
        if (memcmp(buf_mft, "FILE", 4))
                return 1;
index dd86cdcc6a1cd1a60e60f43f7b36531b608ef680..5db8ec260e8c590ec3f0b2df5e1938f9b9471e55 100644 (file)
@@ -32,9 +32,9 @@ static int probe_nvraid(blkid_probe pr,
        struct nv_metadata *nv;
 
        if (pr->size < 0x10000)
-               return -1;
+               return 1;
        if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
-               return -1;
+               return 1;
 
        off = ((pr->size / 0x200) - 2) * 0x200;
        nv = (struct nv_metadata *)
@@ -42,15 +42,15 @@ static int probe_nvraid(blkid_probe pr,
                                off,
                                sizeof(struct nv_metadata));
        if (!nv)
-               return -1;
+               return errno ? -errno : 1;
 
        if (memcmp(nv->vendor, NVIDIA_SIGNATURE, sizeof(NVIDIA_SIGNATURE)-1) != 0)
-               return -1;
+               return 1;
        if (blkid_probe_sprintf_version(pr, "%u", le16_to_cpu(nv->version)) != 0)
-               return -1;
+               return 1;
        if (blkid_probe_set_magic(pr, off, sizeof(nv->vendor),
                                (unsigned char *) nv->vendor))
-               return -1;
+               return 1;
        return 0;
 }
 
index 82170ace12e4bf99e7f8cbcd1eea66b3b7d48587..3fe199d3fe72305e7f4c355825a6e4d9faa38895 100644 (file)
@@ -109,14 +109,14 @@ static int probe_ocfs(blkid_probe pr, const struct blkid_idmag *mag)
        buf = blkid_probe_get_buffer(pr, mag->kboff << 10,
                        sizeof(struct ocfs_volume_header));
        if (!buf)
-               return -1;
+               return errno ? -errno : 1;
        memcpy(&ovh, buf, sizeof(ovh));
 
        /* label */
        buf = blkid_probe_get_buffer(pr, (mag->kboff << 10) + 512,
                        sizeof(struct ocfs_volume_label));
        if (!buf)
-               return -1;
+               return errno ? -errno : 1;
        memcpy(&ovl, buf, sizeof(ovl));
 
        maj = ocfsmajor(ovh);
@@ -144,7 +144,7 @@ static int probe_ocfs2(blkid_probe pr, const struct blkid_idmag *mag)
 
        osb = blkid_probe_get_sb(pr, mag, struct ocfs2_super_block);
        if (!osb)
-               return -1;
+               return errno ? -errno : 1;
 
        blkid_probe_set_label(pr, (unsigned char *) osb->s_label, sizeof(osb->s_label));
        blkid_probe_set_uuid(pr, osb->s_uuid);
@@ -162,7 +162,7 @@ static int probe_oracleasm(blkid_probe pr, const struct blkid_idmag *mag)
 
        dl = blkid_probe_get_sb(pr, mag, struct oracle_asm_disk_label);
        if (!dl)
-               return -1;
+               return errno ? -errno : 1;
 
        blkid_probe_set_label(pr, (unsigned char *) dl->dl_id, sizeof(dl->dl_id));
        return 0;
index 01e4e3752dd8229d6f17c861ddb3be03f6f3f34c..678460a43b8dcf27769a62803f9575b9ca136a1b 100644 (file)
@@ -33,9 +33,9 @@ static int probe_pdcraid(blkid_probe pr,
        };
 
        if (pr->size < 0x40000)
-               return -1;
+               return 1;
        if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
-               return -1;
+               return 1;
 
        for (i = 0; sectors[i] != 0; i++) {
                uint64_t off;
@@ -47,18 +47,18 @@ static int probe_pdcraid(blkid_probe pr,
                                        off,
                                        sizeof(struct promise_metadata));
                if (!pdc)
-                       return -1;
+                       return errno ? -errno : 1;
 
                if (memcmp(pdc->sig, PDC_SIGNATURE,
                                sizeof(PDC_SIGNATURE) - 1) == 0) {
 
                        if (blkid_probe_set_magic(pr, off, sizeof(pdc->sig),
                                                (unsigned char *) pdc->sig))
-                               return -1;
+                               return 1;
                        return 0;
                }
        }
-       return -1;
+       return 1;
 }
 
 const struct blkid_idinfo pdcraid_idinfo = {
index 152571f470e1fce141851961b3de9d69431716b1..edbaaa9469949e2af37b84f6b7406801faa2b1db 100644 (file)
@@ -45,17 +45,17 @@ static int probe_reiser(blkid_probe pr, const struct blkid_idmag *mag)
 
        rs = blkid_probe_get_sb(pr, mag, struct reiserfs_super_block);
        if (!rs)
-               return -1;
+               return errno ? -errno : 1;
 
        blocksize = le16_to_cpu(rs->rs_blocksize);
 
        /* The blocksize must be at least 512B */
        if ((blocksize >> 9) == 0)
-               return -BLKID_ERR_PARAM;
+               return 1;
 
        /* If the superblock is inside the journal, we have the wrong one */
        if (mag->kboff / (blocksize >> 9) > le32_to_cpu(rs->rs_journal_block) / 2)
-               return -BLKID_ERR_BIG;
+               return 1;
 
        /* LABEL/UUID are only valid for later versions of Reiserfs v3.6. */
        if (mag->magic[6] == '2' || mag->magic[6] == '3') {
@@ -82,7 +82,7 @@ static int probe_reiser4(blkid_probe pr, const struct blkid_idmag *mag)
 
        rs4 = blkid_probe_get_sb(pr, mag, struct reiser4_super_block);
        if (!rs4)
-               return -1;
+               return errno ? -errno : 1;
 
        if (*rs4->rs4_label)
                blkid_probe_set_label(pr, rs4->rs4_label, sizeof(rs4->rs4_label));
index 91ef996fee620cc11b8b22fe70289aa25ed5868d..8e63c100d0d70763577925631d876520fcb2a63c 100644 (file)
@@ -29,7 +29,7 @@ static int probe_romfs(blkid_probe pr, const struct blkid_idmag *mag)
 
        ros = blkid_probe_get_sb(pr, mag, struct romfs_super_block);
        if (!ros)
-               return -1;
+               return errno ? -errno : 1;
 
        if (strlen((char *) ros->ros_volume))
                blkid_probe_set_label(pr, ros->ros_volume,
index 10a302313945c4243b9d1cbcb6de5372f13c2727..edbefbc09556bd621e26363d98c40f5e3fcf7dec 100644 (file)
@@ -88,9 +88,9 @@ static int probe_silraid(blkid_probe pr,
        struct silicon_metadata *sil;
 
        if (pr->size < 0x10000)
-               return -1;
+               return 1;
        if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
-               return -1;
+               return 1;
 
        off = ((pr->size / 0x200) - 1) * 0x200;
 
@@ -98,7 +98,7 @@ static int probe_silraid(blkid_probe pr,
                        blkid_probe_get_buffer(pr, off,
                                sizeof(struct silicon_metadata));
        if (!sil)
-               return -1;
+               return errno ? -errno : 1;
 
        if (le32_to_cpu(sil->magic) != SILICON_MAGIC)
                return 1;
@@ -110,13 +110,13 @@ static int probe_silraid(blkid_probe pr,
        if (blkid_probe_sprintf_version(pr, "%u.%u",
                                le16_to_cpu(sil->major_ver),
                                le16_to_cpu(sil->minor_ver)) != 0)
-               return -1;
+               return 1;
 
        if (blkid_probe_set_magic(pr,
                        off + offsetof(struct silicon_metadata, magic),
                        sizeof(sil->magic),
                        (unsigned char *) &sil->magic))
-               return -1;
+               return 1;
        return 0;
 }
 
index 45f102917603f0a2116326030e265be11976390f..595c8e22e0f822d2393805675a3ec7f91220bd70 100644 (file)
@@ -34,7 +34,7 @@ static int probe_squashfs(blkid_probe pr, const struct blkid_idmag *mag)
 
        sq = blkid_probe_get_sb(pr, mag, struct sqsh_super_block);
        if (!sq)
-               return -1;
+               return errno ? -errno : 1;
 
        if (strcmp(mag->magic, "sqsh") == 0 ||
            strcmp(mag->magic, "qshs") == 0)
index 4297a9c4050df78e8d071c97e556a475fa81c2fc..3b50156318aa5a062d87bdb73ff04b80c17e7562 100644 (file)
@@ -44,27 +44,27 @@ static int swap_set_info(blkid_probe pr, const char *version)
        hdr = (struct swap_header_v1_2 *) blkid_probe_get_buffer(pr, 1024,
                                sizeof(struct swap_header_v1_2));
        if (!hdr)
-               return -1;
+               return errno ? -errno : 1;
 
        /* SWAPSPACE2 - check for wrong version or zeroed pagecount */
-        if (strcmp(version, "1") == 0) {
+       if (strcmp(version, "1") == 0) {
                if (hdr->version != 1 && swab32(hdr->version) != 1) {
                        DBG(LOWPROBE, blkid_debug("incorrect swap version"));
-                       return -1;
+                       return 1;
                }
                if (hdr->lastpage == 0) {
                        DBG(LOWPROBE, blkid_debug("not set last swap page"));
-                       return -1;
+                       return 1;
                }
-        }
+       }
 
        /* arbitrary sanity check.. is there any garbage down there? */
        if (hdr->padding[32] == 0 && hdr->padding[33] == 0) {
                if (hdr->volume[0] && blkid_probe_set_label(pr, hdr->volume,
                                sizeof(hdr->volume)) < 0)
-                       return -1;
+                       return 1;
                if (blkid_probe_set_uuid(pr, hdr->uuid) < 0)
-                       return -1;
+                       return 1;
        }
 
        blkid_probe_set_version(pr, version);
@@ -76,12 +76,12 @@ static int probe_swap(blkid_probe pr, const struct blkid_idmag *mag)
        unsigned char *buf;
 
        if (!mag)
-               return -1;
+               return 1;
 
        /* TuxOnIce keeps valid swap header at the end of the 1st page */
        buf = blkid_probe_get_buffer(pr, 0, TOI_MAGIC_STRLEN);
        if (!buf)
-               return -1;
+               return errno ? -errno : 1;
 
        if (memcmp(buf, TOI_MAGIC_STRING, TOI_MAGIC_STRLEN) == 0)
                return 1;       /* Ignore swap signature, it's TuxOnIce */
@@ -94,13 +94,13 @@ static int probe_swap(blkid_probe pr, const struct blkid_idmag *mag)
        } else if (!memcmp(mag->magic, "SWAPSPACE2", mag->len))
                return swap_set_info(pr, "1");
 
-       return -1;
+       return 1;
 }
 
 static int probe_swsuspend(blkid_probe pr, const struct blkid_idmag *mag)
 {
        if (!mag)
-               return -1;
+               return 1;
        if (!memcmp(mag->magic, "S1SUSPEND", mag->len))
                return swap_set_info(pr, "s1suspend");
        if (!memcmp(mag->magic, "S2SUSPEND", mag->len))
@@ -112,7 +112,7 @@ static int probe_swsuspend(blkid_probe pr, const struct blkid_idmag *mag)
        if (!memcmp(mag->magic, "LINHIB0001", mag->len))
                return swap_set_info(pr, "linhib0001");
 
-       return -1;      /* no signature detected */
+       return 1;       /* no signature detected */
 }
 
 const struct blkid_idinfo swap_idinfo =
index 80b0cc542ba9c9ef0443a8faa0f17ed2b268f806..4b345910eb5084fbfc86488df5f79fe7ae61c184 100644 (file)
@@ -80,7 +80,7 @@ static int probe_xenix(blkid_probe pr, const struct blkid_idmag *mag)
 
        sb = blkid_probe_get_sb(pr, mag, struct xenix_super_block);
        if (!sb)
-               return -1;
+               return errno ? -errno : 1;
        blkid_probe_set_label(pr, sb->s_fname, sizeof(sb->s_fname));
        return 0;
 }
@@ -105,21 +105,21 @@ static int probe_sysv(blkid_probe pr,
                                        off,
                                        sizeof(struct sysv_super_block));
                if (!sb)
-                       return -1;
+                       return errno ? -errno : 1;
 
                if (sb->s_magic == cpu_to_le32(0xfd187e20) ||
                    sb->s_magic == cpu_to_be32(0xfd187e20)) {
 
                        if (blkid_probe_set_label(pr, sb->s_fname,
                                                sizeof(sb->s_fname)))
-                               return -1;
+                               return 1;
 
                        if (blkid_probe_set_magic(pr,
                                        off + offsetof(struct sysv_super_block,
                                                                s_magic),
                                        sizeof(sb->s_magic),
                                        (unsigned char *) &sb->s_magic))
-                               return -1;
+                               return 1;
 
                        return 0;
                }
index ef84f53d249ae5d4d66f5b1464a8ccb29e1b47cc..dc84260632fdbaa066a51b1a08073289eb950f36 100644 (file)
@@ -99,7 +99,7 @@ static int probe_ubifs(blkid_probe pr, const struct blkid_idmag *mag)
 
        sb = blkid_probe_get_sb(pr, mag, struct ubifs_sb_node);
        if (!sb)
-               return -1;
+               return errno ? -errno : 1;
 
        blkid_probe_set_uuid(pr, sb->uuid);
        blkid_probe_sprintf_version(pr, "w%dr%d",
index 8702dd04b0e4490fe8d63d1116e869b23e6285fc..5cde3cc2af6d5e42e2ba2fe64204d9c7244a4c0f 100644 (file)
@@ -85,11 +85,11 @@ static int probe_udf(blkid_probe pr,
                                        UDF_VSD_OFFSET + b,
                                        sizeof(*vsd));
                if (!vsd)
-                       return 1;
+                       return errno ? -errno : 1;
                if (vsd->id[0] != '\0')
                        goto nsr;
        }
-       return -1;
+       return 1;
 
 nsr:
        /* search the list of VSDs for a NSR descriptor */
@@ -99,15 +99,15 @@ nsr:
                                        UDF_VSD_OFFSET + ((blkid_loff_t) b * 0x800),
                                        sizeof(*vsd));
                if (!vsd)
-                       return -1;
+                       return errno ? -errno : 1;
                if (vsd->id[0] == '\0')
-                       return -1;
+                       return 1;
                if (memcmp(vsd->id, "NSR02", 5) == 0)
                        goto anchor;
                if (memcmp(vsd->id, "NSR03", 5) == 0)
                        goto anchor;
        }
-       return -1;
+       return 1;
 
 anchor:
        /* read Anchor Volume Descriptor (AVDP), checking block size */
@@ -115,7 +115,7 @@ anchor:
                vd = (struct volume_descriptor *)
                        blkid_probe_get_buffer(pr, 256 * pbs[i], sizeof(*vd));
                if (!vd)
-                       return -1;
+                       return errno ? -errno : 1;
 
                type = le16_to_cpu(vd->tag.id);
                if (type == 2) /* TAG_ID_AVDP */
@@ -138,7 +138,7 @@ real_blksz:
                                        (blkid_loff_t) (loc + b) * bs,
                                        sizeof(*vd));
                if (!vd)
-                       return -1;
+                       return errno ? -errno : 1;
        }
 
        /* Try extract all possible ISO9660 information -- if there is
@@ -155,7 +155,7 @@ real_blksz:
                                        (blkid_loff_t) (loc + b) * bs,
                                        sizeof(*vd));
                if (!vd)
-                       return -1;
+                       return errno ? -errno : 1;
                type = le16_to_cpu(vd->tag.id);
                if (type == 0)
                        break;
index 673a528bc257b9d2a33166de38b61d6fb4f67e5b..6ef2acddca05fd5b1a627ea2ab3197e9a75b16c4 100644 (file)
@@ -185,7 +185,7 @@ static int probe_ufs(blkid_probe pr,
                                        offsets[i] * 1024,
                                        sizeof(struct ufs_super_block));
                if (!ufs)
-                       return -1;
+                       return errno ? -errno : 1;
 
                magBE = be32_to_cpu(ufs->fs_magic);
                magLE = le32_to_cpu(ufs->fs_magic);
@@ -231,7 +231,7 @@ found:
                                offsetof(struct ufs_super_block, fs_magic),
                        sizeof(ufs->fs_magic),
                        (unsigned char *) &ufs->fs_magic))
-               return -1;
+               return 1;
 
        return 0;
 }
index 8ff241b939f23ef054dab421fe512636cb500d23..6d7cda9ad011767e1495b066594b85acececdc8b 100644 (file)
@@ -261,10 +261,10 @@ int blkid_probe_is_vfat(blkid_probe pr)
 
        ms = blkid_probe_get_sb(pr, mag, struct msdos_super_block);
        if (!ms)
-               return 0;
+               return errno ? -errno : 0;
        vs = blkid_probe_get_sb(pr, mag, struct vfat_super_block);
        if (!vs)
-               return 0;
+               return errno ? -errno : 0;
 
        return fat_valid_superblock(mag, ms, vs, NULL, NULL);
 }
@@ -283,10 +283,12 @@ static int probe_vfat(blkid_probe pr, const struct blkid_idmag *mag)
 
        ms = blkid_probe_get_sb(pr, mag, struct msdos_super_block);
        if (!ms)
-               return 0;
+               return errno ? -errno : 1;
+
        vs = blkid_probe_get_sb(pr, mag, struct vfat_super_block);
        if (!vs)
-               return 0;
+               return errno ? -errno : 1;
+
        if (!fat_valid_superblock(mag, ms, vs, &cluster_count, &fat_size))
                return 1;
 
@@ -376,16 +378,16 @@ static int probe_vfat(blkid_probe pr, const struct blkid_idmag *mag)
                                        (blkid_loff_t) fsinfo_sect * sector_size,
                                        sizeof(struct fat32_fsinfo));
                        if (buf == NULL)
-                               return -1;
+                               return errno ? -errno : 1;
 
                        fsinfo = (struct fat32_fsinfo *) buf;
                        if (memcmp(fsinfo->signature1, "\x52\x52\x61\x41", 4) != 0 &&
                            memcmp(fsinfo->signature1, "\x52\x52\x64\x41", 4) != 0 &&
                            memcmp(fsinfo->signature1, "\x00\x00\x00\x00", 4) != 0)
-                               return -1;
+                               return 1;
                        if (memcmp(fsinfo->signature2, "\x72\x72\x41\x61", 4) != 0 &&
                            memcmp(fsinfo->signature2, "\x00\x00\x00\x00", 4) != 0)
-                               return -1;
+                               return 1;
                }
        }
 
index 5c15167aa823a48b671ba746a7ab0feb5e5cc47e..ee3ab658ed4953bd9e64bb04b8bc1b59a9e829c9 100644 (file)
@@ -63,7 +63,7 @@ static int probe_viaraid(blkid_probe pr,
                                off,
                                sizeof(struct via_metadata));
        if (!v)
-               return -1;
+               return errno ? -errno : 1;
 
        if (le16_to_cpu(v->signature) != VIA_SIGNATURE)
                return 1;
@@ -73,11 +73,11 @@ static int probe_viaraid(blkid_probe pr,
                return 1;
 
        if (blkid_probe_sprintf_version(pr, "%u", v->version_number) != 0)
-               return -1;
+               return 1;
        if (blkid_probe_set_magic(pr, off,
                                sizeof(v->signature),
                                (unsigned char *) &v->signature))
-               return -1;
+               return 1;
        return 0;
 }
 
index ead09a8d11e8cfbe14d05015ee39ba91685f2d02..fac87abe5dbdaefd54c0fc9668e6bd890c915284 100644 (file)
@@ -28,7 +28,7 @@ static int probe_vmfs_fs(blkid_probe pr, const struct blkid_idmag *mag)
 
        header = blkid_probe_get_sb(pr, mag, struct vmfs_fs_info);
        if (header == NULL)
-               return -1;
+               return errno ? -errno : 1;
 
        blkid_probe_sprintf_uuid(pr, (unsigned char *) header->uuid, 16,
                "%02x%02x%02x%02x-%02x%02x%02x%02x-"
@@ -53,7 +53,7 @@ static int probe_vmfs_volume(blkid_probe pr, const struct blkid_idmag *mag)
 
        header = blkid_probe_get_sb(pr, mag, struct vmfs_volume_info);
        if (header == NULL)
-               return -1;
+               return errno ? -errno : 1;
 
        blkid_probe_sprintf_value(pr, "UUID_SUB",
                "%02x%02x%02x%02x-%02x%02x%02x%02x-"
index fdab85a720bfeb2b32cd7dbd3b8c742e060aadb1..19d284cbfef1f6fa5e8b04bbd9284b680deddfd8 100644 (file)
@@ -20,7 +20,7 @@ static int probe_vxfs(blkid_probe pr, const struct blkid_idmag *mag)
 
        vxs = blkid_probe_get_sb(pr, mag, struct vxfs_super_block);
        if (!vxs)
-               return -1;
+               return errno ? -errno : 1;
 
        blkid_probe_sprintf_version(pr, "%u", (unsigned int) vxs->vs_version);
        return 0;
index f4bb72188202e0101a9e2bfaf6ffc6796262d14b..a6c04a2f09359f52214c42113571288ce5074570 100644 (file)
@@ -164,7 +164,7 @@ static int probe_xfs(blkid_probe pr, const struct blkid_idmag *mag)
 
        xs = blkid_probe_get_sb(pr, mag, struct xfs_super_block);
        if (!xs)
-               return -1;
+               return errno ? -errno : 1;
 
        if (!xfs_verify_sb(xs))
                return 1;
@@ -249,7 +249,7 @@ static int probe_xfs_log(blkid_probe pr, const struct blkid_idmag *mag)
 
        buf = blkid_probe_get_buffer(pr, 0, 256*1024);
        if (!buf)
-               return -1;
+               return errno ? -errno : 1;
 
        if (memcmp(buf, "XFSB", 4) == 0)
                return 1;                       /* this is regular XFS, ignore */
@@ -264,7 +264,7 @@ static int probe_xfs_log(blkid_probe pr, const struct blkid_idmag *mag)
                }
        }
 
-       return -1;
+       return 1;
 }
 
 const struct blkid_idinfo xfs_log_idinfo =
index fb86aec77dec9c63e12e9344ab3745c725c71442..406ba2be8cc2dab6b9a0d646eba4c265b1cbb7d9 100644 (file)
@@ -185,7 +185,7 @@ static int probe_zfs(blkid_probe pr,
                        blkid_probe_get_buffer(pr, offset,
                                               sizeof(struct zfs_uberblock));
                if (ub == NULL)
-                       return -1;
+                       return errno ? -errno : 1;
 
                if (ub->ub_magic == UBERBLOCK_MAGIC) {
                        ub_offset = offset;
@@ -202,7 +202,7 @@ static int probe_zfs(blkid_probe pr,
        }
 
        if (found < 4)
-               return -1;
+               return 1;
 
        /* If we found the 4th uberblock, then we will have exited from the
         * scanning loop immediately, and ub will be a valid uberblock. */
@@ -214,7 +214,7 @@ static int probe_zfs(blkid_probe pr,
        if (blkid_probe_set_magic(pr, ub_offset,
                                sizeof(ub->ub_magic),
                                (unsigned char *) &ub->ub_magic))
-               return -1;
+               return 1;
 
        return 0;
 }