summaryrefslogtreecommitdiffstats
path: root/shlibs/blkid/src/partitions/dos.c
diff options
context:
space:
mode:
authorKarel Zak2010-04-07 09:39:05 +0200
committerKarel Zak2010-04-07 09:39:05 +0200
commit9f4664ee40618b3d393161d82d000f2bca4ec45a (patch)
tree0418c5210dc380b163a82a09d17f5a7e1e345eea /shlibs/blkid/src/partitions/dos.c
parentlibblkid: fix blkid_partlist_devno_to_partition() for extended partitions (diff)
downloadkernel-qcow2-util-linux-9f4664ee40618b3d393161d82d000f2bca4ec45a.tar.gz
kernel-qcow2-util-linux-9f4664ee40618b3d393161d82d000f2bca4ec45a.tar.xz
kernel-qcow2-util-linux-9f4664ee40618b3d393161d82d000f2bca4ec45a.zip
libblkid: fix 'partno' usage
Linux kernel ignores empty partitions, but partition number is always allocated for the partition. (This rule is used for primary partitions only.) For example: part 1. size=12345 part 2. size=0 part 3. size=24567 the final list of partitions: sda1 sda3 'sda2' is not defined and partno=2 is not used for any other partitions. The libblkid library has to be compatible with this rule. Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'shlibs/blkid/src/partitions/dos.c')
-rw-r--r--shlibs/blkid/src/partitions/dos.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/shlibs/blkid/src/partitions/dos.c b/shlibs/blkid/src/partitions/dos.c
index c9865b75d..7c95b8bea 100644
--- a/shlibs/blkid/src/partitions/dos.c
+++ b/shlibs/blkid/src/partitions/dos.c
@@ -203,9 +203,12 @@ static int probe_dos_pt(blkid_probe pr, const struct blkid_idmag *mag)
start = dos_partition_start(p) * ssf;
size = dos_partition_size(p) * ssf;
- if (!size)
+ if (!size) {
+ /* Linux kernel ignores empty partitions, but partno for
+ * the empty primary partitions is not reused */
+ blkid_partlist_increment_partno(ls);
continue;
-
+ }
par = blkid_partlist_add_partition(ls, tab, start, size);
if (!par)
goto err;