The following patch makes the subpartition scan in fs/partitions/msdos.c
scan all partitions, not only the primary ones.
Useful for the AROS/Amithlon subpartition patch (see separate mail).
Comments?
diff -ru linux-2.6.16/fs/partitions/check.h
logical-subpartitions/fs/partitions/check.h
--- linux-2.6.16/fs/partitions/check.h 2006-04-10 14:05:43.000000000 +0200
+++ logical-subpartitions/fs/partitions/check.h 2006-04-10
14:09:11.000000000 +0200
@@ -13,6 +13,7 @@
sector_t from;
sector_t size;
int flags;
+ int id;
} parts[MAX_PART];
int next;
int limit;
diff -ru linux-2.6.16/fs/partitions/msdos.c
logical-subpartitions/fs/partitions/msdos.c
--- linux-2.6.16/fs/partitions/msdos.c 2006-04-10 14:05:43.000000000 +0200
+++ logical-subpartitions/fs/partitions/msdos.c 2006-04-10
14:09:11.000000000 +0200
@@ -132,6 +132,7 @@
}
put_partition(state, state->next, next, size);
+ state->parts[state->next].id = SYS_IND(p);
if (SYS_IND(p) == LINUX_RAID_PARTITION)
state->parts[state->next].flags = 1;
loopct = 0;
@@ -384,7 +385,7 @@
Sector sect;
unsigned char *data;
struct partition *p;
- int slot;
+ int slot, max_slot;
data = read_dev_sector(bdev, 0, §);
if (!data)
@@ -442,6 +443,7 @@
continue;
}
put_partition(state, slot, start, size);
+ state->parts[slot].id = SYS_IND(p);
if (SYS_IND(p) == LINUX_RAID_PARTITION)
state->parts[slot].flags = 1;
if (SYS_IND(p) == DM6_PARTITION)
@@ -453,12 +455,13 @@
printk("\n");
/* second pass - output for each on a separate line */
- p = (struct partition *) (0x1be + data);
- for (slot = 1 ; slot <= 4 ; slot++, p++) {
- unsigned char id = SYS_IND(p);
+ for (slot = 1, max_slot = state->next ; slot < max_slot ; slot++) {
+ unsigned char id = (unsigned char) state->parts[slot].id;
+ u32 start = state->parts[slot].from;
+ u32 size = state->parts[slot].size;
int n;
- if (!NR_SECTS(p))
+ if (!size)
continue;
for (n = 0; subtypes[n].parse && id != subtypes[n].id; n++)
@@ -466,8 +469,7 @@
if (!subtypes[n].parse)
continue;
- subtypes[n].parse(state, bdev, START_SECT(p)*sector_size,
- NR_SECTS(p)*sector_size, slot);
+ subtypes[n].parse(state, bdev, start, size, slot);
}
put_dev_sector(sect);
return 1;
--
---- Martin Blom --------------------------- [email protected] ----
Eccl 1:18 http://martin.blom.org/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]