9
0
Fork 0

cdev: store dos partition type in struct cdev

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Sascha Hauer 2013-09-13 15:08:40 +02:00
parent 51dce5facb
commit 1369bfd44f
4 changed files with 10 additions and 3 deletions

View File

@ -63,6 +63,8 @@ static int register_one_partition(struct block_device *blk,
goto out; goto out;
} }
cdev->dos_partition_type = part->dos_partition_type;
free(partition_name); free(partition_name);
if (!part->name[0]) if (!part->name[0])
@ -84,7 +86,7 @@ static int register_one_partition(struct block_device *blk,
ret = 0; ret = 0;
out: out:
free(partition_name); free(partition_name);
return 0; return ret;
} }
static struct partition_parser *partition_parser_get_by_filetype(uint8_t *buf) static struct partition_parser *partition_parser_get_by_filetype(uint8_t *buf)

View File

@ -138,10 +138,13 @@ static void dos_partition(void *buf, struct block_device *blk,
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
pentry.first_sec = get_unaligned_le32(&table[i].partition_start); pentry.first_sec = get_unaligned_le32(&table[i].partition_start);
pentry.size = get_unaligned_le32(&table[i].partition_size); pentry.size = get_unaligned_le32(&table[i].partition_size);
pentry.dos_partition_type = table[i].type;
if (pentry.first_sec != 0) { if (pentry.first_sec != 0) {
pd->parts[pd->used_entries].first_sec = pentry.first_sec; int n = pd->used_entries;
pd->parts[pd->used_entries].size = pentry.size; pd->parts[n].first_sec = pentry.first_sec;
pd->parts[n].size = pentry.size;
pd->parts[n].dos_partition_type = pentry.dos_partition_type;
pd->used_entries++; pd->used_entries++;
} else { } else {
dev_dbg(blk->dev, "Skipping empty partition %d\n", i); dev_dbg(blk->dev, "Skipping empty partition %d\n", i);

View File

@ -16,6 +16,7 @@
struct partition { struct partition {
char name[MAX_PARTITION_NAME]; char name[MAX_PARTITION_NAME];
u8 dos_partition_type;
uint64_t first_sec; uint64_t first_sec;
uint64_t size; uint64_t size;
}; };

View File

@ -456,6 +456,7 @@ struct cdev {
unsigned int flags; unsigned int flags;
int open; int open;
struct mtd_info *mtd; struct mtd_info *mtd;
u8 dos_partition_type;
}; };
int devfs_create(struct cdev *); int devfs_create(struct cdev *);