Skip to content
Snippets Groups Projects
Commit 56670d6f authored by Kever Yang's avatar Kever Yang Committed by Tom Rini
Browse files

disk: part: use common api to lookup part driver


Do not need to scan disk every time when we get part info
by name.

Signed-off-by: default avatarKever Yang <kever.yang@rock-chips.com>
[trini: Fix build in !CONFIG_HAVE_BLOCK_DEVICE case]
Signed-off-by: default avatarTom Rini <trini@konsulko.com>
parent d4729269
No related branches found
No related tags found
No related merge requests found
...@@ -26,7 +26,6 @@ ...@@ -26,7 +26,6 @@
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
#ifdef CONFIG_HAVE_BLOCK_DEVICE
static struct part_driver *part_driver_lookup_type(struct blk_desc *dev_desc) static struct part_driver *part_driver_lookup_type(struct blk_desc *dev_desc)
{ {
struct part_driver *drv = struct part_driver *drv =
...@@ -55,6 +54,7 @@ static struct part_driver *part_driver_lookup_type(struct blk_desc *dev_desc) ...@@ -55,6 +54,7 @@ static struct part_driver *part_driver_lookup_type(struct blk_desc *dev_desc)
return NULL; return NULL;
} }
#ifdef CONFIG_HAVE_BLOCK_DEVICE
static struct blk_desc *get_dev_hwpart(const char *ifname, int dev, int hwpart) static struct blk_desc *get_dev_hwpart(const char *ifname, int dev, int hwpart)
{ {
struct blk_desc *dev_desc; struct blk_desc *dev_desc;
...@@ -644,28 +644,25 @@ cleanup: ...@@ -644,28 +644,25 @@ cleanup:
int part_get_info_by_name_type(struct blk_desc *dev_desc, const char *name, int part_get_info_by_name_type(struct blk_desc *dev_desc, const char *name,
disk_partition_t *info, int part_type) disk_partition_t *info, int part_type)
{ {
struct part_driver *first_drv =
ll_entry_start(struct part_driver, part_driver);
const int n_drvs = ll_entry_count(struct part_driver, part_driver);
struct part_driver *part_drv; struct part_driver *part_drv;
int ret;
for (part_drv = first_drv; part_drv != first_drv + n_drvs; part_drv++) { int i;
int ret;
int i; part_drv = part_driver_lookup_type(dev_desc);
for (i = 1; i < part_drv->max_entries; i++) { if (!part_drv)
if (part_type >= 0 && part_type != part_drv->part_type) return -1;
break; for (i = 1; i < part_drv->max_entries; i++) {
ret = part_drv->get_info(dev_desc, i, info); ret = part_drv->get_info(dev_desc, i, info);
if (ret != 0) { if (ret != 0) {
/* no more entries in table */ /* no more entries in table */
break; break;
} }
if (strcmp(name, (const char *)info->name) == 0) { if (strcmp(name, (const char *)info->name) == 0) {
/* matched */ /* matched */
return i; return i;
}
} }
} }
return -1; return -1;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment