]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libblkid: re-read PART{UUID,LABEL} for successfully verified cached devices
authorKarel Zak <kzak@redhat.com>
Tue, 4 Dec 2012 12:02:57 +0000 (13:02 +0100)
committerKarel Zak <kzak@redhat.com>
Tue, 4 Dec 2012 12:02:57 +0000 (13:02 +0100)
Signed-off-by: Karel Zak <kzak@redhat.com>
libblkid/src/verify.c

index da78d6b0832c687a8fd523ff70549b102884d4ac..8a6fc20afd19b7629d49ad7328105095e96cd823 100644 (file)
@@ -161,9 +161,6 @@ blkid_dev blkid_verify(blkid_cache cache, blkid_dev dev)
                BLKID_SUBLKS_LABEL | BLKID_SUBLKS_UUID |
                BLKID_SUBLKS_TYPE | BLKID_SUBLKS_SECTYPE);
 
-       blkid_probe_enable_partitions(cache->probe, TRUE);
-       blkid_probe_set_partitions_flags(cache->probe, BLKID_PARTS_ENTRY_DETAILS);
-
        /*
         * If we already know the type, then try that first.
         */
@@ -177,8 +174,18 @@ blkid_dev blkid_verify(blkid_cache cache, blkid_dev dev)
                blkid_probe_filter_superblocks_type(cache->probe,
                                BLKID_FLTR_ONLYIN, fltr);
 
-               if (!blkid_do_probe(cache->probe))
-                       goto found_type;
+               if (blkid_do_probe(cache->probe) == 0) {
+                       /*
+                        * Cool, we found FS type, let's also read PART{UUID,LABEL}
+                        */
+                       blkid_probe_enable_superblocks(cache->probe, FALSE);
+                       blkid_probe_enable_partitions(cache->probe, TRUE);
+                       blkid_probe_set_partitions_flags(cache->probe, BLKID_PARTS_ENTRY_DETAILS);
+                       if (blkid_do_probe(cache->probe) == 0)
+                               goto found_type;
+               }
+
+               blkid_probe_enable_superblocks(cache->probe, TRUE);
                blkid_probe_invert_superblocks_filter(cache->probe);
 
                /*
@@ -193,6 +200,9 @@ blkid_dev blkid_verify(blkid_cache cache, blkid_dev dev)
                blkid_tag_iterate_end(iter);
        }
 
+       blkid_probe_enable_partitions(cache->probe, TRUE);
+       blkid_probe_set_partitions_flags(cache->probe, BLKID_PARTS_ENTRY_DETAILS);
+
        /*
         * Probe for all types.
         */