[PATCH 08/13] DISK: Add common partition handling for disk like media
Juergen Beisert
jbe at pengutronix.de
Mon Nov 21 06:30:09 EST 2011
Next try. Now only local vars are used.
diff --git a/common/partitions.c b/common/partitions.c
index f3e0f6f..6310988 100644
--- a/common/partitions.c
+++ b/common/partitions.c
@@ -42,14 +42,13 @@ struct partition_desc {
struct partition parts[8];
};
-static struct partition_desc pdesc;
-
-static void add_one_partition_entry(struct partition *p)
+static void add_one_partition_entry(struct partition *p,
+ struct partition_desc *pdesc)
{
- if (pdesc.used_entries >= 8)
+ if (pdesc->used_entries >= 8)
return; /* ignore */
- pdesc.parts[pdesc.used_entries] = *p;
- pdesc.used_entries++;
+ pdesc->parts[pdesc->used_entries] = *p;
+ pdesc->used_entries++;
}
/**
@@ -125,12 +124,14 @@ static int read_dos_partition_table(struct block_device *blk, uint8_t *sector_bu
/**
* Check if a DOS like partition describes this block device
* @param blk Block device to register to
+ * @param pd Where to store the partition information
* @return 0 on success, -EINVAL if no partition table was found
*
* It seems at least on ARM this routine canot use temp. stack space for the
* sector. So, keep the malloc/free.
*/
-static int __maybe_unused try_dos_partition(struct block_device *blk)
+static int __maybe_unused try_dos_partition(struct block_device *blk,
+ struct partition_desc *pd)
{
int part_order[4] = {0, 1, 2, 3};
uint8_t *buffer;
@@ -163,7 +164,7 @@ static int __maybe_unused try_dos_partition(struct block_device *blk)
continue;
if (pentry.first_sec != 0)
- add_one_partition_entry(&pentry);
+ add_one_partition_entry(&pentry, pd);
else {
dev_dbg(blk->dev, "Skipping empty partition %d\n", i);
}
@@ -204,12 +205,13 @@ static int register_one_partition(struct block_device *blk,
*/
int parse_partition_table(struct block_device *blk)
{
+ struct partition_desc pdesc = { .used_entries = 0, };
int i;
int rc = 0;
#ifdef CONFIG_PARTITION_DISK_DOS
if (pdesc.used_entries == 0)
- try_dos_partition(blk);
+ try_dos_partition(blk, &pdesc);
#endif
if (pdesc.used_entries != 0) {
--
Pengutronix e.K. | Juergen Beisert |
Linux Solutions for Science and Industry | http://www.pengutronix.de/ |
More information about the barebox
mailing list