summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2013-09-13 15:08:40 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2013-10-14 14:04:20 +0200
commit1369bfd44f2393893036ee50f81e0104f7fb6416 (patch)
treef5eab85de4e8529904ec012bf4c7668d37d444da
parent51dce5facb4d1a6f182ede9654b25c2e83878aee (diff)
downloadbarebox-1369bfd44f2393893036ee50f81e0104f7fb6416.tar.gz
cdev: store dos partition type in struct cdev
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--common/partitions.c4
-rw-r--r--common/partitions/dos.c7
-rw-r--r--common/partitions/parser.h1
-rw-r--r--include/driver.h1
4 files changed, 10 insertions, 3 deletions
diff --git a/common/partitions.c b/common/partitions.c
index 38032a3..694c6f6 100644
--- a/common/partitions.c
+++ b/common/partitions.c
@@ -63,6 +63,8 @@ static int register_one_partition(struct block_device *blk,
goto out;
}
+ cdev->dos_partition_type = part->dos_partition_type;
+
free(partition_name);
if (!part->name[0])
@@ -84,7 +86,7 @@ static int register_one_partition(struct block_device *blk,
ret = 0;
out:
free(partition_name);
- return 0;
+ return ret;
}
static struct partition_parser *partition_parser_get_by_filetype(uint8_t *buf)
diff --git a/common/partitions/dos.c b/common/partitions/dos.c
index 29f1375..31b1ed6 100644
--- a/common/partitions/dos.c
+++ b/common/partitions/dos.c
@@ -138,10 +138,13 @@ static void dos_partition(void *buf, struct block_device *blk,
for (i = 0; i < 4; i++) {
pentry.first_sec = get_unaligned_le32(&table[i].partition_start);
pentry.size = get_unaligned_le32(&table[i].partition_size);
+ pentry.dos_partition_type = table[i].type;
if (pentry.first_sec != 0) {
- pd->parts[pd->used_entries].first_sec = pentry.first_sec;
- pd->parts[pd->used_entries].size = pentry.size;
+ int n = pd->used_entries;
+ 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++;
} else {
dev_dbg(blk->dev, "Skipping empty partition %d\n", i);
diff --git a/common/partitions/parser.h b/common/partitions/parser.h
index f5bdbd1..8d39452 100644
--- a/common/partitions/parser.h
+++ b/common/partitions/parser.h
@@ -16,6 +16,7 @@
struct partition {
char name[MAX_PARTITION_NAME];
+ u8 dos_partition_type;
uint64_t first_sec;
uint64_t size;
};
diff --git a/include/driver.h b/include/driver.h
index 9e4bffd..7f0532e 100644
--- a/include/driver.h
+++ b/include/driver.h
@@ -456,6 +456,7 @@ struct cdev {
unsigned int flags;
int open;
struct mtd_info *mtd;
+ u8 dos_partition_type;
};
int devfs_create(struct cdev *);