part: Use desc instead of dev_desc
The dev_ prefix is a hangover from the pre-driver model days. The device is now a different thing, with driver model. Update the partition code to just use 'desc', as is done with driver model. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
178
disk/part.c
178
disk/part.c
@@ -42,25 +42,25 @@ static struct part_driver *part_driver_get_type(int part_type)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct part_driver *part_driver_lookup_type(struct blk_desc *dev_desc)
|
static struct part_driver *part_driver_lookup_type(struct blk_desc *desc)
|
||||||
{
|
{
|
||||||
struct part_driver *drv =
|
struct part_driver *drv =
|
||||||
ll_entry_start(struct part_driver, part_driver);
|
ll_entry_start(struct part_driver, part_driver);
|
||||||
const int n_ents = ll_entry_count(struct part_driver, part_driver);
|
const int n_ents = ll_entry_count(struct part_driver, part_driver);
|
||||||
struct part_driver *entry;
|
struct part_driver *entry;
|
||||||
|
|
||||||
if (dev_desc->part_type == PART_TYPE_UNKNOWN) {
|
if (desc->part_type == PART_TYPE_UNKNOWN) {
|
||||||
for (entry = drv; entry != drv + n_ents; entry++) {
|
for (entry = drv; entry != drv + n_ents; entry++) {
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = entry->test(dev_desc);
|
ret = entry->test(desc);
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
dev_desc->part_type = entry->part_type;
|
desc->part_type = entry->part_type;
|
||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return part_driver_get_type(dev_desc->part_type);
|
return part_driver_get_type(desc->part_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Not found */
|
/* Not found */
|
||||||
@@ -85,25 +85,25 @@ int part_get_type_by_name(const char *name)
|
|||||||
|
|
||||||
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 *desc;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!blk_enabled())
|
if (!blk_enabled())
|
||||||
return NULL;
|
return NULL;
|
||||||
dev_desc = blk_get_devnum_by_uclass_idname(ifname, dev);
|
desc = blk_get_devnum_by_uclass_idname(ifname, dev);
|
||||||
if (!dev_desc) {
|
if (!desc) {
|
||||||
debug("%s: No device for iface '%s', dev %d\n", __func__,
|
debug("%s: No device for iface '%s', dev %d\n", __func__,
|
||||||
ifname, dev);
|
ifname, dev);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
ret = blk_dselect_hwpart(dev_desc, hwpart);
|
ret = blk_dselect_hwpart(desc, hwpart);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
debug("%s: Failed to select h/w partition: err-%d\n", __func__,
|
debug("%s: Failed to select h/w partition: err-%d\n", __func__,
|
||||||
ret);
|
ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return dev_desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct blk_desc *blk_get_dev(const char *ifname, int dev)
|
struct blk_desc *blk_get_dev(const char *ifname, int dev)
|
||||||
@@ -140,29 +140,24 @@ static lba512_t lba512_muldiv(lba512_t block_count, lba512_t mul_by,
|
|||||||
return bc_quot * mul_by + ((bc_rem * mul_by) >> right_shift);
|
return bc_quot * mul_by + ((bc_rem * mul_by) >> right_shift);
|
||||||
}
|
}
|
||||||
|
|
||||||
void dev_print(struct blk_desc *dev_desc)
|
void dev_print(struct blk_desc *desc)
|
||||||
{
|
{
|
||||||
lba512_t lba512; /* number of blocks if 512bytes block size */
|
lba512_t lba512; /* number of blocks if 512bytes block size */
|
||||||
|
|
||||||
if (dev_desc->type == DEV_TYPE_UNKNOWN) {
|
if (desc->type == DEV_TYPE_UNKNOWN) {
|
||||||
puts ("not available\n");
|
puts ("not available\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (dev_desc->uclass_id) {
|
switch (desc->uclass_id) {
|
||||||
case UCLASS_SCSI:
|
case UCLASS_SCSI:
|
||||||
printf ("(%d:%d) Vendor: %s Prod.: %s Rev: %s\n",
|
printf("(%d:%d) Vendor: %s Prod.: %s Rev: %s\n", desc->target,
|
||||||
dev_desc->target,dev_desc->lun,
|
desc->lun, desc->vendor, desc->product, desc->revision);
|
||||||
dev_desc->vendor,
|
|
||||||
dev_desc->product,
|
|
||||||
dev_desc->revision);
|
|
||||||
break;
|
break;
|
||||||
case UCLASS_IDE:
|
case UCLASS_IDE:
|
||||||
case UCLASS_AHCI:
|
case UCLASS_AHCI:
|
||||||
printf ("Model: %s Firm: %s Ser#: %s\n",
|
printf("Model: %s Firm: %s Ser#: %s\n", desc->vendor,
|
||||||
dev_desc->vendor,
|
desc->revision, desc->product);
|
||||||
dev_desc->revision,
|
|
||||||
dev_desc->product);
|
|
||||||
break;
|
break;
|
||||||
case UCLASS_MMC:
|
case UCLASS_MMC:
|
||||||
case UCLASS_USB:
|
case UCLASS_USB:
|
||||||
@@ -171,27 +166,27 @@ void dev_print(struct blk_desc *dev_desc)
|
|||||||
case UCLASS_HOST:
|
case UCLASS_HOST:
|
||||||
case UCLASS_BLKMAP:
|
case UCLASS_BLKMAP:
|
||||||
printf ("Vendor: %s Rev: %s Prod: %s\n",
|
printf ("Vendor: %s Rev: %s Prod: %s\n",
|
||||||
dev_desc->vendor,
|
desc->vendor,
|
||||||
dev_desc->revision,
|
desc->revision,
|
||||||
dev_desc->product);
|
desc->product);
|
||||||
break;
|
break;
|
||||||
case UCLASS_VIRTIO:
|
case UCLASS_VIRTIO:
|
||||||
printf("%s VirtIO Block Device\n", dev_desc->vendor);
|
printf("%s VirtIO Block Device\n", desc->vendor);
|
||||||
break;
|
break;
|
||||||
case UCLASS_EFI_MEDIA:
|
case UCLASS_EFI_MEDIA:
|
||||||
printf("EFI media Block Device %d\n", dev_desc->devnum);
|
printf("EFI media Block Device %d\n", desc->devnum);
|
||||||
break;
|
break;
|
||||||
case UCLASS_INVALID:
|
case UCLASS_INVALID:
|
||||||
puts("device type unknown\n");
|
puts("device type unknown\n");
|
||||||
return;
|
return;
|
||||||
default:
|
default:
|
||||||
printf("Unhandled device type: %i\n", dev_desc->uclass_id);
|
printf("Unhandled device type: %i\n", desc->uclass_id);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
puts (" Type: ");
|
puts (" Type: ");
|
||||||
if (dev_desc->removable)
|
if (desc->removable)
|
||||||
puts ("Removable ");
|
puts ("Removable ");
|
||||||
switch (dev_desc->type & 0x1F) {
|
switch (desc->type & 0x1F) {
|
||||||
case DEV_TYPE_HARDDISK:
|
case DEV_TYPE_HARDDISK:
|
||||||
puts ("Hard Disk");
|
puts ("Hard Disk");
|
||||||
break;
|
break;
|
||||||
@@ -205,17 +200,17 @@ void dev_print(struct blk_desc *dev_desc)
|
|||||||
puts ("Tape");
|
puts ("Tape");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
printf ("# %02X #", dev_desc->type & 0x1F);
|
printf("# %02X #", desc->type & 0x1F);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
puts ("\n");
|
puts ("\n");
|
||||||
if (dev_desc->lba > 0L && dev_desc->blksz > 0L) {
|
if (desc->lba > 0L && desc->blksz > 0L) {
|
||||||
ulong mb, mb_quot, mb_rem, gb, gb_quot, gb_rem;
|
ulong mb, mb_quot, mb_rem, gb, gb_quot, gb_rem;
|
||||||
lbaint_t lba;
|
lbaint_t lba;
|
||||||
|
|
||||||
lba = dev_desc->lba;
|
lba = desc->lba;
|
||||||
|
|
||||||
lba512 = (lba * (dev_desc->blksz/512));
|
lba512 = lba * (desc->blksz / 512);
|
||||||
/* round to 1 digit */
|
/* round to 1 digit */
|
||||||
/* 2048 = (1024 * 1024) / 512 MB */
|
/* 2048 = (1024 * 1024) / 512 MB */
|
||||||
mb = lba512_muldiv(lba512, 10, 11);
|
mb = lba512_muldiv(lba512, 10, 11);
|
||||||
@@ -227,7 +222,7 @@ void dev_print(struct blk_desc *dev_desc)
|
|||||||
gb_quot = gb / 10;
|
gb_quot = gb / 10;
|
||||||
gb_rem = gb - (10 * gb_quot);
|
gb_rem = gb - (10 * gb_quot);
|
||||||
#ifdef CONFIG_LBA48
|
#ifdef CONFIG_LBA48
|
||||||
if (dev_desc->lba48)
|
if (desc->lba48)
|
||||||
printf (" Supports 48-bit addressing\n");
|
printf (" Supports 48-bit addressing\n");
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_SYS_64BIT_LBA)
|
#if defined(CONFIG_SYS_64BIT_LBA)
|
||||||
@@ -235,42 +230,42 @@ void dev_print(struct blk_desc *dev_desc)
|
|||||||
mb_quot, mb_rem,
|
mb_quot, mb_rem,
|
||||||
gb_quot, gb_rem,
|
gb_quot, gb_rem,
|
||||||
lba,
|
lba,
|
||||||
dev_desc->blksz);
|
desc->blksz);
|
||||||
#else
|
#else
|
||||||
printf (" Capacity: %lu.%lu MB = %lu.%lu GB (%lu x %lu)\n",
|
printf (" Capacity: %lu.%lu MB = %lu.%lu GB (%lu x %lu)\n",
|
||||||
mb_quot, mb_rem,
|
mb_quot, mb_rem,
|
||||||
gb_quot, gb_rem,
|
gb_quot, gb_rem,
|
||||||
(ulong)lba,
|
(ulong)lba,
|
||||||
dev_desc->blksz);
|
desc->blksz);
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
puts (" Capacity: not available\n");
|
puts (" Capacity: not available\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void part_init(struct blk_desc *dev_desc)
|
void part_init(struct blk_desc *desc)
|
||||||
{
|
{
|
||||||
struct part_driver *drv =
|
struct part_driver *drv =
|
||||||
ll_entry_start(struct part_driver, part_driver);
|
ll_entry_start(struct part_driver, part_driver);
|
||||||
const int n_ents = ll_entry_count(struct part_driver, part_driver);
|
const int n_ents = ll_entry_count(struct part_driver, part_driver);
|
||||||
struct part_driver *entry;
|
struct part_driver *entry;
|
||||||
|
|
||||||
blkcache_invalidate(dev_desc->uclass_id, dev_desc->devnum);
|
blkcache_invalidate(desc->uclass_id, desc->devnum);
|
||||||
|
|
||||||
dev_desc->part_type = PART_TYPE_UNKNOWN;
|
desc->part_type = PART_TYPE_UNKNOWN;
|
||||||
for (entry = drv; entry != drv + n_ents; entry++) {
|
for (entry = drv; entry != drv + n_ents; entry++) {
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = entry->test(dev_desc);
|
ret = entry->test(desc);
|
||||||
debug("%s: try '%s': ret=%d\n", __func__, entry->name, ret);
|
debug("%s: try '%s': ret=%d\n", __func__, entry->name, ret);
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
dev_desc->part_type = entry->part_type;
|
desc->part_type = entry->part_type;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_part_header(const char *type, struct blk_desc *dev_desc)
|
static void print_part_header(const char *type, struct blk_desc *desc)
|
||||||
{
|
{
|
||||||
#if CONFIG_IS_ENABLED(MAC_PARTITION) || \
|
#if CONFIG_IS_ENABLED(MAC_PARTITION) || \
|
||||||
CONFIG_IS_ENABLED(DOS_PARTITION) || \
|
CONFIG_IS_ENABLED(DOS_PARTITION) || \
|
||||||
@@ -278,7 +273,7 @@ static void print_part_header(const char *type, struct blk_desc *dev_desc)
|
|||||||
CONFIG_IS_ENABLED(AMIGA_PARTITION) || \
|
CONFIG_IS_ENABLED(AMIGA_PARTITION) || \
|
||||||
CONFIG_IS_ENABLED(EFI_PARTITION)
|
CONFIG_IS_ENABLED(EFI_PARTITION)
|
||||||
puts ("\nPartition Map for ");
|
puts ("\nPartition Map for ");
|
||||||
switch (dev_desc->uclass_id) {
|
switch (desc->uclass_id) {
|
||||||
case UCLASS_IDE:
|
case UCLASS_IDE:
|
||||||
puts ("IDE");
|
puts ("IDE");
|
||||||
break;
|
break;
|
||||||
@@ -314,28 +309,28 @@ static void print_part_header(const char *type, struct blk_desc *dev_desc)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
printf (" device %d -- Partition Type: %s\n\n",
|
printf (" device %d -- Partition Type: %s\n\n",
|
||||||
dev_desc->devnum, type);
|
desc->devnum, type);
|
||||||
#endif /* any CONFIG_..._PARTITION */
|
#endif /* any CONFIG_..._PARTITION */
|
||||||
}
|
}
|
||||||
|
|
||||||
void part_print(struct blk_desc *dev_desc)
|
void part_print(struct blk_desc *desc)
|
||||||
{
|
{
|
||||||
struct part_driver *drv;
|
struct part_driver *drv;
|
||||||
|
|
||||||
drv = part_driver_lookup_type(dev_desc);
|
drv = part_driver_lookup_type(desc);
|
||||||
if (!drv) {
|
if (!drv) {
|
||||||
printf("## Unknown partition table type %x\n",
|
printf("## Unknown partition table type %x\n",
|
||||||
dev_desc->part_type);
|
desc->part_type);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
PRINTF("## Testing for valid %s partition ##\n", drv->name);
|
PRINTF("## Testing for valid %s partition ##\n", drv->name);
|
||||||
print_part_header(drv->name, dev_desc);
|
print_part_header(drv->name, desc);
|
||||||
if (drv->print)
|
if (drv->print)
|
||||||
drv->print(dev_desc);
|
drv->print(desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
int part_get_info_by_type(struct blk_desc *dev_desc, int part, int part_type,
|
int part_get_info_by_type(struct blk_desc *desc, int part, int part_type,
|
||||||
struct disk_partition *info)
|
struct disk_partition *info)
|
||||||
{
|
{
|
||||||
struct part_driver *drv;
|
struct part_driver *drv;
|
||||||
@@ -350,14 +345,14 @@ int part_get_info_by_type(struct blk_desc *dev_desc, int part, int part_type,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (part_type == PART_TYPE_UNKNOWN) {
|
if (part_type == PART_TYPE_UNKNOWN) {
|
||||||
drv = part_driver_lookup_type(dev_desc);
|
drv = part_driver_lookup_type(desc);
|
||||||
} else {
|
} else {
|
||||||
drv = part_driver_get_type(part_type);
|
drv = part_driver_get_type(part_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!drv) {
|
if (!drv) {
|
||||||
debug("## Unknown partition table type %x\n",
|
debug("## Unknown partition table type %x\n",
|
||||||
dev_desc->part_type);
|
desc->part_type);
|
||||||
return -EPROTONOSUPPORT;
|
return -EPROTONOSUPPORT;
|
||||||
}
|
}
|
||||||
if (!drv->get_info) {
|
if (!drv->get_info) {
|
||||||
@@ -365,7 +360,7 @@ int part_get_info_by_type(struct blk_desc *dev_desc, int part, int part_type,
|
|||||||
drv->name);
|
drv->name);
|
||||||
return -ENOSYS;
|
return -ENOSYS;
|
||||||
}
|
}
|
||||||
if (drv->get_info(dev_desc, part, info) == 0) {
|
if (drv->get_info(desc, part, info) == 0) {
|
||||||
PRINTF("## Valid %s partition found ##\n", drv->name);
|
PRINTF("## Valid %s partition found ##\n", drv->name);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -374,18 +369,18 @@ int part_get_info_by_type(struct blk_desc *dev_desc, int part, int part_type,
|
|||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
int part_get_info(struct blk_desc *dev_desc, int part,
|
int part_get_info(struct blk_desc *desc, int part,
|
||||||
struct disk_partition *info)
|
struct disk_partition *info)
|
||||||
{
|
{
|
||||||
return part_get_info_by_type(dev_desc, part, PART_TYPE_UNKNOWN, info);
|
return part_get_info_by_type(desc, part, PART_TYPE_UNKNOWN, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
int part_get_info_whole_disk(struct blk_desc *dev_desc,
|
int part_get_info_whole_disk(struct blk_desc *desc,
|
||||||
struct disk_partition *info)
|
struct disk_partition *info)
|
||||||
{
|
{
|
||||||
info->start = 0;
|
info->start = 0;
|
||||||
info->size = dev_desc->lba;
|
info->size = desc->lba;
|
||||||
info->blksz = dev_desc->blksz;
|
info->blksz = desc->blksz;
|
||||||
info->bootable = 0;
|
info->bootable = 0;
|
||||||
strcpy((char *)info->type, BOOT_PART_TYPE);
|
strcpy((char *)info->type, BOOT_PART_TYPE);
|
||||||
strcpy((char *)info->name, "Whole Disk");
|
strcpy((char *)info->name, "Whole Disk");
|
||||||
@@ -400,7 +395,7 @@ int part_get_info_whole_disk(struct blk_desc *dev_desc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
int blk_get_device_by_str(const char *ifname, const char *dev_hwpart_str,
|
int blk_get_device_by_str(const char *ifname, const char *dev_hwpart_str,
|
||||||
struct blk_desc **dev_desc)
|
struct blk_desc **desc)
|
||||||
{
|
{
|
||||||
char *ep;
|
char *ep;
|
||||||
char *dup_str = NULL;
|
char *dup_str = NULL;
|
||||||
@@ -436,8 +431,8 @@ int blk_get_device_by_str(const char *ifname, const char *dev_hwpart_str,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*dev_desc = get_dev_hwpart(ifname, dev, hwpart);
|
*desc = get_dev_hwpart(ifname, dev, hwpart);
|
||||||
if (!(*dev_desc) || ((*dev_desc)->type == DEV_TYPE_UNKNOWN)) {
|
if (!(*desc) || ((*desc)->type == DEV_TYPE_UNKNOWN)) {
|
||||||
debug("** Bad device %s %s **\n", ifname, dev_hwpart_str);
|
debug("** Bad device %s %s **\n", ifname, dev_hwpart_str);
|
||||||
dev = -ENODEV;
|
dev = -ENODEV;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@@ -449,8 +444,8 @@ int blk_get_device_by_str(const char *ifname, const char *dev_hwpart_str,
|
|||||||
* Always should be done, otherwise hw partition 0 will return
|
* Always should be done, otherwise hw partition 0 will return
|
||||||
* stale data after displaying a non-zero hw partition.
|
* stale data after displaying a non-zero hw partition.
|
||||||
*/
|
*/
|
||||||
if ((*dev_desc)->uclass_id == UCLASS_MMC)
|
if ((*desc)->uclass_id == UCLASS_MMC)
|
||||||
part_init(*dev_desc);
|
part_init(*desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
@@ -461,7 +456,7 @@ cleanup:
|
|||||||
#define PART_UNSPECIFIED -2
|
#define PART_UNSPECIFIED -2
|
||||||
#define PART_AUTO -1
|
#define PART_AUTO -1
|
||||||
int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
|
int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
|
||||||
struct blk_desc **dev_desc,
|
struct blk_desc **desc,
|
||||||
struct disk_partition *info, int allow_whole_dev)
|
struct disk_partition *info, int allow_whole_dev)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
@@ -474,7 +469,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
|
|||||||
int part;
|
int part;
|
||||||
struct disk_partition tmpinfo;
|
struct disk_partition tmpinfo;
|
||||||
|
|
||||||
*dev_desc = NULL;
|
*desc = NULL;
|
||||||
memset(info, 0, sizeof(*info));
|
memset(info, 0, sizeof(*info));
|
||||||
|
|
||||||
#if IS_ENABLED(CONFIG_SANDBOX) || IS_ENABLED(CONFIG_SEMIHOSTING)
|
#if IS_ENABLED(CONFIG_SANDBOX) || IS_ENABLED(CONFIG_SEMIHOSTING)
|
||||||
@@ -533,7 +528,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Look up the device */
|
/* Look up the device */
|
||||||
dev = blk_get_device_by_str(ifname, dev_str, dev_desc);
|
dev = blk_get_device_by_str(ifname, dev_str, desc);
|
||||||
if (dev < 0) {
|
if (dev < 0) {
|
||||||
printf("** Bad device specification %s %s **\n",
|
printf("** Bad device specification %s %s **\n",
|
||||||
ifname, dev_str);
|
ifname, dev_str);
|
||||||
@@ -565,9 +560,8 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
|
|||||||
* No partition table on device,
|
* No partition table on device,
|
||||||
* or user requested partition 0 (entire device).
|
* or user requested partition 0 (entire device).
|
||||||
*/
|
*/
|
||||||
if (((*dev_desc)->part_type == PART_TYPE_UNKNOWN) ||
|
if (((*desc)->part_type == PART_TYPE_UNKNOWN) || !part) {
|
||||||
(part == 0)) {
|
if (!(*desc)->lba) {
|
||||||
if (!(*dev_desc)->lba) {
|
|
||||||
printf("** Bad device size - %s %s **\n", ifname,
|
printf("** Bad device size - %s %s **\n", ifname,
|
||||||
dev_str);
|
dev_str);
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
@@ -586,9 +580,9 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
(*dev_desc)->log2blksz = LOG2((*dev_desc)->blksz);
|
(*desc)->log2blksz = LOG2((*desc)->blksz);
|
||||||
|
|
||||||
part_get_info_whole_disk(*dev_desc, info);
|
part_get_info_whole_disk(*desc, info);
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@@ -606,7 +600,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
|
|||||||
* other than "auto", use that partition number directly.
|
* other than "auto", use that partition number directly.
|
||||||
*/
|
*/
|
||||||
if (part != PART_AUTO) {
|
if (part != PART_AUTO) {
|
||||||
ret = part_get_info(*dev_desc, part, info);
|
ret = part_get_info(*desc, part, info);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
printf("** Invalid partition %d **\n", part);
|
printf("** Invalid partition %d **\n", part);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@@ -618,7 +612,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
|
|||||||
*/
|
*/
|
||||||
part = 0;
|
part = 0;
|
||||||
for (p = 1; p <= MAX_SEARCH_PARTITIONS; p++) {
|
for (p = 1; p <= MAX_SEARCH_PARTITIONS; p++) {
|
||||||
ret = part_get_info(*dev_desc, p, info);
|
ret = part_get_info(*desc, p, info);
|
||||||
if (ret)
|
if (ret)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@@ -662,7 +656,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
(*dev_desc)->log2blksz = LOG2((*dev_desc)->blksz);
|
(*desc)->log2blksz = LOG2((*desc)->blksz);
|
||||||
|
|
||||||
ret = part;
|
ret = part;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@@ -672,14 +666,14 @@ cleanup:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int part_get_info_by_name(struct blk_desc *dev_desc, const char *name,
|
int part_get_info_by_name(struct blk_desc *desc, const char *name,
|
||||||
struct disk_partition *info)
|
struct disk_partition *info)
|
||||||
{
|
{
|
||||||
struct part_driver *part_drv;
|
struct part_driver *part_drv;
|
||||||
int ret;
|
int ret;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
part_drv = part_driver_lookup_type(dev_desc);
|
part_drv = part_driver_lookup_type(desc);
|
||||||
if (!part_drv)
|
if (!part_drv)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@@ -690,7 +684,7 @@ int part_get_info_by_name(struct blk_desc *dev_desc, const char *name,
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (i = 1; i < part_drv->max_entries; i++) {
|
for (i = 1; i < part_drv->max_entries; i++) {
|
||||||
ret = part_drv->get_info(dev_desc, i, info);
|
ret = part_drv->get_info(desc, i, info);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
/* no more entries in table */
|
/* no more entries in table */
|
||||||
break;
|
break;
|
||||||
@@ -710,18 +704,18 @@ int part_get_info_by_name(struct blk_desc *dev_desc, const char *name,
|
|||||||
* Parse a device number and partition name string in the form of
|
* Parse a device number and partition name string in the form of
|
||||||
* "devicenum.hwpartnum#partition_name", for example "0.1#misc". devicenum and
|
* "devicenum.hwpartnum#partition_name", for example "0.1#misc". devicenum and
|
||||||
* hwpartnum are both optional, defaulting to 0. If the partition is found,
|
* hwpartnum are both optional, defaulting to 0. If the partition is found,
|
||||||
* sets dev_desc and part_info accordingly with the information of the
|
* sets desc and part_info accordingly with the information of the
|
||||||
* partition with the given partition_name.
|
* partition with the given partition_name.
|
||||||
*
|
*
|
||||||
* @param[in] dev_iface Device interface
|
* @param[in] dev_iface Device interface
|
||||||
* @param[in] dev_part_str Input string argument, like "0.1#misc"
|
* @param[in] dev_part_str Input string argument, like "0.1#misc"
|
||||||
* @param[out] dev_desc Place to store the device description pointer
|
* @param[out] desc Place to store the device description pointer
|
||||||
* @param[out] part_info Place to store the partition information
|
* @param[out] part_info Place to store the partition information
|
||||||
* Return: 0 on success, or a negative on error
|
* Return: 0 on success, or a negative on error
|
||||||
*/
|
*/
|
||||||
static int part_get_info_by_dev_and_name(const char *dev_iface,
|
static int part_get_info_by_dev_and_name(const char *dev_iface,
|
||||||
const char *dev_part_str,
|
const char *dev_part_str,
|
||||||
struct blk_desc **dev_desc,
|
struct blk_desc **desc,
|
||||||
struct disk_partition *part_info)
|
struct disk_partition *part_info)
|
||||||
{
|
{
|
||||||
char *dup_str = NULL;
|
char *dup_str = NULL;
|
||||||
@@ -743,11 +737,11 @@ static int part_get_info_by_dev_and_name(const char *dev_iface,
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = blk_get_device_by_str(dev_iface, dev_str, dev_desc);
|
ret = blk_get_device_by_str(dev_iface, dev_str, desc);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
ret = part_get_info_by_name(*dev_desc, part_str, part_info);
|
ret = part_get_info_by_name(*desc, part_str, part_info);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
printf("Could not find \"%s\" partition\n", part_str);
|
printf("Could not find \"%s\" partition\n", part_str);
|
||||||
|
|
||||||
@@ -758,35 +752,35 @@ cleanup:
|
|||||||
|
|
||||||
int part_get_info_by_dev_and_name_or_num(const char *dev_iface,
|
int part_get_info_by_dev_and_name_or_num(const char *dev_iface,
|
||||||
const char *dev_part_str,
|
const char *dev_part_str,
|
||||||
struct blk_desc **dev_desc,
|
struct blk_desc **desc,
|
||||||
struct disk_partition *part_info,
|
struct disk_partition *part_info,
|
||||||
int allow_whole_dev)
|
int allow_whole_dev)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* Split the part_name if passed as "$dev_num#part_name". */
|
/* Split the part_name if passed as "$dev_num#part_name". */
|
||||||
ret = part_get_info_by_dev_and_name(dev_iface, dev_part_str,
|
ret = part_get_info_by_dev_and_name(dev_iface, dev_part_str, desc,
|
||||||
dev_desc, part_info);
|
part_info);
|
||||||
if (ret >= 0)
|
if (ret >= 0)
|
||||||
return ret;
|
return ret;
|
||||||
/*
|
/*
|
||||||
* Couldn't lookup by name, try looking up the partition description
|
* Couldn't lookup by name, try looking up the partition description
|
||||||
* directly.
|
* directly.
|
||||||
*/
|
*/
|
||||||
ret = blk_get_device_part_str(dev_iface, dev_part_str,
|
ret = blk_get_device_part_str(dev_iface, dev_part_str, desc, part_info,
|
||||||
dev_desc, part_info, allow_whole_dev);
|
allow_whole_dev);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
printf("Couldn't find partition %s %s\n",
|
printf("Couldn't find partition %s %s\n",
|
||||||
dev_iface, dev_part_str);
|
dev_iface, dev_part_str);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void part_set_generic_name(const struct blk_desc *dev_desc,
|
void part_set_generic_name(const struct blk_desc *desc, int part_num,
|
||||||
int part_num, char *name)
|
char *name)
|
||||||
{
|
{
|
||||||
char *devtype;
|
char *devtype;
|
||||||
|
|
||||||
switch (dev_desc->uclass_id) {
|
switch (desc->uclass_id) {
|
||||||
case UCLASS_IDE:
|
case UCLASS_IDE:
|
||||||
case UCLASS_AHCI:
|
case UCLASS_AHCI:
|
||||||
devtype = "hd";
|
devtype = "hd";
|
||||||
@@ -805,7 +799,7 @@ void part_set_generic_name(const struct blk_desc *dev_desc,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(name, "%s%c%d", devtype, 'a' + dev_desc->devnum, part_num);
|
sprintf(name, "%s%c%d", devtype, 'a' + desc->devnum, part_num);
|
||||||
}
|
}
|
||||||
|
|
||||||
int part_get_bootable(struct blk_desc *desc)
|
int part_get_bootable(struct blk_desc *desc)
|
||||||
|
125
include/part.h
125
include/part.h
@@ -113,7 +113,7 @@ struct blk_desc *mg_disk_get_dev(int dev);
|
|||||||
* contained with the interface's data structure. There is no global
|
* contained with the interface's data structure. There is no global
|
||||||
* numbering for block devices, so the interface name must be provided.
|
* numbering for block devices, so the interface name must be provided.
|
||||||
*
|
*
|
||||||
* @dev_desc: Block device descriptor
|
* @desc: Block device descriptor
|
||||||
* @part: Partition number to read
|
* @part: Partition number to read
|
||||||
* @part_type: Partition driver to use, or PART_TYPE_UNKNOWN to automatically
|
* @part_type: Partition driver to use, or PART_TYPE_UNKNOWN to automatically
|
||||||
* choose a driver
|
* choose a driver
|
||||||
@@ -121,24 +121,24 @@ struct blk_desc *mg_disk_get_dev(int dev);
|
|||||||
*
|
*
|
||||||
* Return: 0 on success, negative errno on failure
|
* Return: 0 on success, negative errno on failure
|
||||||
*/
|
*/
|
||||||
int part_get_info_by_type(struct blk_desc *dev_desc, int part, int part_type,
|
int part_get_info_by_type(struct blk_desc *desc, int part, int part_type,
|
||||||
struct disk_partition *info);
|
struct disk_partition *info);
|
||||||
int part_get_info(struct blk_desc *dev_desc, int part,
|
int part_get_info(struct blk_desc *desc, int part,
|
||||||
struct disk_partition *info);
|
struct disk_partition *info);
|
||||||
/**
|
/**
|
||||||
* part_get_info_whole_disk() - get partition info for the special case of
|
* part_get_info_whole_disk() - get partition info for the special case of
|
||||||
* a partition occupying the entire disk.
|
* a partition occupying the entire disk.
|
||||||
*
|
*
|
||||||
* @dev_desc: block device descriptor
|
* @desc: block device descriptor
|
||||||
* @info: returned partition information
|
* @info: returned partition information
|
||||||
* Return: 0 on success
|
* Return: 0 on success
|
||||||
*/
|
*/
|
||||||
int part_get_info_whole_disk(struct blk_desc *dev_desc,
|
int part_get_info_whole_disk(struct blk_desc *desc,
|
||||||
struct disk_partition *info);
|
struct disk_partition *info);
|
||||||
|
|
||||||
void part_print(struct blk_desc *dev_desc);
|
void part_print(struct blk_desc *desc);
|
||||||
void part_init(struct blk_desc *dev_desc);
|
void part_init(struct blk_desc *desc);
|
||||||
void dev_print(struct blk_desc *dev_desc);
|
void dev_print(struct blk_desc *desc);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* blk_get_device_by_str() - Get a block device given its interface/hw partition
|
* blk_get_device_by_str() - Get a block device given its interface/hw partition
|
||||||
@@ -162,11 +162,11 @@ void dev_print(struct blk_desc *dev_desc);
|
|||||||
* containing the device number (e.g. "2") or the device number
|
* containing the device number (e.g. "2") or the device number
|
||||||
* and hardware partition number (e.g. "2.4") for devices that
|
* and hardware partition number (e.g. "2.4") for devices that
|
||||||
* support it (currently only MMC).
|
* support it (currently only MMC).
|
||||||
* @dev_desc: Returns a pointer to the block device on success
|
* @desc: Returns a pointer to the block device on success
|
||||||
* Return: block device number (local to the interface), or -1 on error
|
* Return: block device number (local to the interface), or -1 on error
|
||||||
*/
|
*/
|
||||||
int blk_get_device_by_str(const char *ifname, const char *dev_str,
|
int blk_get_device_by_str(const char *ifname, const char *dev_str,
|
||||||
struct blk_desc **dev_desc);
|
struct blk_desc **desc);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* blk_get_device_part_str() - Get a block device and partition
|
* blk_get_device_part_str() - Get a block device and partition
|
||||||
@@ -196,7 +196,7 @@ int blk_get_device_by_str(const char *ifname, const char *dev_str,
|
|||||||
*
|
*
|
||||||
* @ifname: Interface name (e.g. "ide", "scsi")
|
* @ifname: Interface name (e.g. "ide", "scsi")
|
||||||
* @dev_part_str: Device and partition string
|
* @dev_part_str: Device and partition string
|
||||||
* @dev_desc: Returns a pointer to the block device on success
|
* @desc: Returns a pointer to the block device on success
|
||||||
* @info: Returns partition information
|
* @info: Returns partition information
|
||||||
* @allow_whole_dev: true to allow the user to select partition 0
|
* @allow_whole_dev: true to allow the user to select partition 0
|
||||||
* (which means the whole device), false to require a valid
|
* (which means the whole device), false to require a valid
|
||||||
@@ -205,22 +205,22 @@ int blk_get_device_by_str(const char *ifname, const char *dev_str,
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
|
int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
|
||||||
struct blk_desc **dev_desc,
|
struct blk_desc **desc,
|
||||||
struct disk_partition *info, int allow_whole_dev);
|
struct disk_partition *info, int allow_whole_dev);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* part_get_info_by_name() - Search for a partition by name
|
* part_get_info_by_name() - Search for a partition by name
|
||||||
* among all available registered partitions
|
* among all available registered partitions
|
||||||
*
|
*
|
||||||
* @dev_desc: block device descriptor
|
* @desc: block device descriptor
|
||||||
* @name: the specified table entry name
|
* @name: the specified table entry name
|
||||||
* @info: returns the disk partition info
|
* @info: returns the disk partition info
|
||||||
*
|
*
|
||||||
* Return: the partition number on match (starting on 1), -1 on no match,
|
* Return: the partition number on match (starting on 1), -1 on no match,
|
||||||
* otherwise error
|
* otherwise error
|
||||||
*/
|
*/
|
||||||
int part_get_info_by_name(struct blk_desc *dev_desc,
|
int part_get_info_by_name(struct blk_desc *desc, const char *name,
|
||||||
const char *name, struct disk_partition *info);
|
struct disk_partition *info);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* part_get_info_by_dev_and_name_or_num() - Get partition info from dev number
|
* part_get_info_by_dev_and_name_or_num() - Get partition info from dev number
|
||||||
@@ -232,11 +232,11 @@ int part_get_info_by_name(struct blk_desc *dev_desc,
|
|||||||
* (like "device_num#partition_name") or a device number plus a partition number
|
* (like "device_num#partition_name") or a device number plus a partition number
|
||||||
* separated by a ":". For example both "0#misc" and "0:1" can be valid
|
* separated by a ":". For example both "0#misc" and "0:1" can be valid
|
||||||
* partition descriptions for a given interface. If the partition is found, sets
|
* partition descriptions for a given interface. If the partition is found, sets
|
||||||
* dev_desc and part_info accordingly with the information of the partition.
|
* desc and part_info accordingly with the information of the partition.
|
||||||
*
|
*
|
||||||
* @dev_iface: Device interface
|
* @dev_iface: Device interface
|
||||||
* @dev_part_str: Input partition description, like "0#misc" or "0:1"
|
* @dev_part_str: Input partition description, like "0#misc" or "0:1"
|
||||||
* @dev_desc: Place to store the device description pointer
|
* @desc: Place to store the device description pointer
|
||||||
* @part_info: Place to store the partition information
|
* @part_info: Place to store the partition information
|
||||||
* @allow_whole_dev: true to allow the user to select partition 0
|
* @allow_whole_dev: true to allow the user to select partition 0
|
||||||
* (which means the whole device), false to require a valid
|
* (which means the whole device), false to require a valid
|
||||||
@@ -245,7 +245,7 @@ int part_get_info_by_name(struct blk_desc *dev_desc,
|
|||||||
*/
|
*/
|
||||||
int part_get_info_by_dev_and_name_or_num(const char *dev_iface,
|
int part_get_info_by_dev_and_name_or_num(const char *dev_iface,
|
||||||
const char *dev_part_str,
|
const char *dev_part_str,
|
||||||
struct blk_desc **dev_desc,
|
struct blk_desc **desc,
|
||||||
struct disk_partition *part_info,
|
struct disk_partition *part_info,
|
||||||
int allow_whole_dev);
|
int allow_whole_dev);
|
||||||
|
|
||||||
@@ -256,12 +256,12 @@ int part_get_info_by_dev_and_name_or_num(const char *dev_iface,
|
|||||||
* (DOS, ISO). Generates partition name out of the device type and partition
|
* (DOS, ISO). Generates partition name out of the device type and partition
|
||||||
* number.
|
* number.
|
||||||
*
|
*
|
||||||
* @dev_desc: pointer to the block device
|
* @desc: pointer to the block device
|
||||||
* @part_num: partition number for which the name is generated
|
* @part_num: partition number for which the name is generated
|
||||||
* @name: buffer where the name is written
|
* @name: buffer where the name is written
|
||||||
*/
|
*/
|
||||||
void part_set_generic_name(const struct blk_desc *dev_desc,
|
void part_set_generic_name(const struct blk_desc *desc, int part_num,
|
||||||
int part_num, char *name);
|
char *name);
|
||||||
|
|
||||||
extern const struct block_drvr block_drvr[];
|
extern const struct block_drvr block_drvr[];
|
||||||
#else
|
#else
|
||||||
@@ -269,26 +269,25 @@ static inline struct blk_desc *blk_get_dev(const char *ifname, int dev)
|
|||||||
{ return NULL; }
|
{ return NULL; }
|
||||||
static inline struct blk_desc *mg_disk_get_dev(int dev) { return NULL; }
|
static inline struct blk_desc *mg_disk_get_dev(int dev) { return NULL; }
|
||||||
|
|
||||||
static inline int part_get_info(struct blk_desc *dev_desc, int part,
|
static inline int part_get_info(struct blk_desc *desc, int part,
|
||||||
struct disk_partition *info) { return -1; }
|
struct disk_partition *info) { return -1; }
|
||||||
static inline int part_get_info_whole_disk(struct blk_desc *dev_desc,
|
static inline int part_get_info_whole_disk(struct blk_desc *desc,
|
||||||
struct disk_partition *info)
|
struct disk_partition *info)
|
||||||
{ return -1; }
|
{ return -1; }
|
||||||
static inline void part_print(struct blk_desc *dev_desc) {}
|
static inline void part_print(struct blk_desc *desc) {}
|
||||||
static inline void part_init(struct blk_desc *dev_desc) {}
|
static inline void part_init(struct blk_desc *desc) {}
|
||||||
static inline void dev_print(struct blk_desc *dev_desc) {}
|
static inline void dev_print(struct blk_desc *desc) {}
|
||||||
static inline int blk_get_device_by_str(const char *ifname, const char *dev_str,
|
static inline int blk_get_device_by_str(const char *ifname, const char *dev_str,
|
||||||
struct blk_desc **dev_desc)
|
struct blk_desc **desc)
|
||||||
{ return -1; }
|
{ return -1; }
|
||||||
static inline int blk_get_device_part_str(const char *ifname,
|
static inline int blk_get_device_part_str(const char *ifname,
|
||||||
const char *dev_part_str,
|
const char *dev_part_str,
|
||||||
struct blk_desc **dev_desc,
|
struct blk_desc **desc,
|
||||||
struct disk_partition *info,
|
struct disk_partition *info,
|
||||||
int allow_whole_dev)
|
int allow_whole_dev)
|
||||||
{ *dev_desc = NULL; return -1; }
|
{ *desc = NULL; return -1; }
|
||||||
|
|
||||||
static inline int part_get_info_by_name(struct blk_desc *dev_desc,
|
static inline int part_get_info_by_name(struct blk_desc *desc, const char *name,
|
||||||
const char *name,
|
|
||||||
struct disk_partition *info)
|
struct disk_partition *info)
|
||||||
{
|
{
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
@@ -297,11 +296,11 @@ static inline int part_get_info_by_name(struct blk_desc *dev_desc,
|
|||||||
static inline int
|
static inline int
|
||||||
part_get_info_by_dev_and_name_or_num(const char *dev_iface,
|
part_get_info_by_dev_and_name_or_num(const char *dev_iface,
|
||||||
const char *dev_part_str,
|
const char *dev_part_str,
|
||||||
struct blk_desc **dev_desc,
|
struct blk_desc **desc,
|
||||||
struct disk_partition *part_info,
|
struct disk_partition *part_info,
|
||||||
int allow_whole_dev)
|
int allow_whole_dev)
|
||||||
{
|
{
|
||||||
*dev_desc = NULL;
|
*desc = NULL;
|
||||||
return -ENOSYS;
|
return -ENOSYS;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -382,29 +381,29 @@ struct part_driver {
|
|||||||
/**
|
/**
|
||||||
* @get_info: Get information about a partition
|
* @get_info: Get information about a partition
|
||||||
*
|
*
|
||||||
* @get_info.dev_desc: Block device descriptor
|
* @get_info.desc: Block device descriptor
|
||||||
* @get_info.part: Partition number (1 = first)
|
* @get_info.part: Partition number (1 = first)
|
||||||
* @get_info.info: Returns partition information
|
* @get_info.info: Returns partition information
|
||||||
*/
|
*/
|
||||||
int (*get_info)(struct blk_desc *dev_desc, int part,
|
int (*get_info)(struct blk_desc *desc, int part,
|
||||||
struct disk_partition *info);
|
struct disk_partition *info);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @print: Print partition information
|
* @print: Print partition information
|
||||||
*
|
*
|
||||||
* @print.dev_desc: Block device descriptor
|
* @print.desc: Block device descriptor
|
||||||
*/
|
*/
|
||||||
void (*print)(struct blk_desc *dev_desc);
|
void (*print)(struct blk_desc *desc);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @test: Test if a device contains this partition type
|
* @test: Test if a device contains this partition type
|
||||||
*
|
*
|
||||||
* @test.dev_desc: Block device descriptor
|
* @test.desc: Block device descriptor
|
||||||
* @test.Return:
|
* @test.Return:
|
||||||
* 0 if the block device appears to contain this partition type,
|
* 0 if the block device appears to contain this partition type,
|
||||||
* -ve if not
|
* -ve if not
|
||||||
*/
|
*/
|
||||||
int (*test)(struct blk_desc *dev_desc);
|
int (*test)(struct blk_desc *desc);
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Declare a new U-Boot partition 'driver' */
|
/* Declare a new U-Boot partition 'driver' */
|
||||||
@@ -418,19 +417,18 @@ struct part_driver {
|
|||||||
/**
|
/**
|
||||||
* write_gpt_table() - Write the GUID Partition Table to disk
|
* write_gpt_table() - Write the GUID Partition Table to disk
|
||||||
*
|
*
|
||||||
* @dev_desc: block device descriptor
|
* @desc: block device descriptor
|
||||||
* @gpt_h: pointer to GPT header representation
|
* @gpt_h: pointer to GPT header representation
|
||||||
* @gpt_e: pointer to GPT partition table entries
|
* @gpt_e: pointer to GPT partition table entries
|
||||||
*
|
*
|
||||||
* Return: zero on success, otherwise error
|
* Return: zero on success, otherwise error
|
||||||
*/
|
*/
|
||||||
int write_gpt_table(struct blk_desc *dev_desc,
|
int write_gpt_table(struct blk_desc *desc, gpt_header *gpt_h, gpt_entry *gpt_e);
|
||||||
gpt_header *gpt_h, gpt_entry *gpt_e);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gpt_fill_pte() - Fill the GPT partition table entry
|
* gpt_fill_pte() - Fill the GPT partition table entry
|
||||||
*
|
*
|
||||||
* @dev_desc: block device descriptor
|
* @desc: block device descriptor
|
||||||
* @gpt_h: GPT header representation
|
* @gpt_h: GPT header representation
|
||||||
* @gpt_e: GPT partition table entries
|
* @gpt_e: GPT partition table entries
|
||||||
* @partitions: list of partitions
|
* @partitions: list of partitions
|
||||||
@@ -438,55 +436,54 @@ int write_gpt_table(struct blk_desc *dev_desc,
|
|||||||
*
|
*
|
||||||
* Return: zero on success
|
* Return: zero on success
|
||||||
*/
|
*/
|
||||||
int gpt_fill_pte(struct blk_desc *dev_desc,
|
int gpt_fill_pte(struct blk_desc *desc, gpt_header *gpt_h, gpt_entry *gpt_e,
|
||||||
gpt_header *gpt_h, gpt_entry *gpt_e,
|
|
||||||
struct disk_partition *partitions, int parts);
|
struct disk_partition *partitions, int parts);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gpt_fill_header() - Fill the GPT header
|
* gpt_fill_header() - Fill the GPT header
|
||||||
*
|
*
|
||||||
* @dev_desc: block device descriptor
|
* @desc: block device descriptor
|
||||||
* @gpt_h: GPT header representation
|
* @gpt_h: GPT header representation
|
||||||
* @str_guid: disk guid string representation
|
* @str_guid: disk guid string representation
|
||||||
* @parts_count: number of partitions
|
* @parts_count: number of partitions
|
||||||
*
|
*
|
||||||
* Return: error on str_guid conversion error
|
* Return: error on str_guid conversion error
|
||||||
*/
|
*/
|
||||||
int gpt_fill_header(struct blk_desc *dev_desc, gpt_header *gpt_h,
|
int gpt_fill_header(struct blk_desc *desc, gpt_header *gpt_h, char *str_guid,
|
||||||
char *str_guid, int parts_count);
|
int parts_count);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gpt_restore() - Restore GPT partition table
|
* gpt_restore() - Restore GPT partition table
|
||||||
*
|
*
|
||||||
* @dev_desc: block device descriptor
|
* @desc: block device descriptor
|
||||||
* @str_disk_guid: disk GUID
|
* @str_disk_guid: disk GUID
|
||||||
* @partitions: list of partitions
|
* @partitions: list of partitions
|
||||||
* @parts_count: number of partitions
|
* @parts_count: number of partitions
|
||||||
*
|
*
|
||||||
* Return: 0 on success
|
* Return: 0 on success
|
||||||
*/
|
*/
|
||||||
int gpt_restore(struct blk_desc *dev_desc, char *str_disk_guid,
|
int gpt_restore(struct blk_desc *desc, char *str_disk_guid,
|
||||||
struct disk_partition *partitions, const int parts_count);
|
struct disk_partition *partitions, const int parts_count);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* is_valid_gpt_buf() - Ensure that the Primary GPT information is valid
|
* is_valid_gpt_buf() - Ensure that the Primary GPT information is valid
|
||||||
*
|
*
|
||||||
* @dev_desc: block device descriptor
|
* @desc: block device descriptor
|
||||||
* @buf: buffer which contains the MBR and Primary GPT info
|
* @buf: buffer which contains the MBR and Primary GPT info
|
||||||
*
|
*
|
||||||
* Return: 0 on success, otherwise error
|
* Return: 0 on success, otherwise error
|
||||||
*/
|
*/
|
||||||
int is_valid_gpt_buf(struct blk_desc *dev_desc, void *buf);
|
int is_valid_gpt_buf(struct blk_desc *desc, void *buf);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* write_mbr_and_gpt_partitions() - write MBR, Primary GPT and Backup GPT
|
* write_mbr_and_gpt_partitions() - write MBR, Primary GPT and Backup GPT
|
||||||
*
|
*
|
||||||
* @dev_desc: block device descriptor
|
* @desc: block device descriptor
|
||||||
* @buf: buffer which contains the MBR and Primary GPT info
|
* @buf: buffer which contains the MBR and Primary GPT info
|
||||||
*
|
*
|
||||||
* Return: 0 on success, otherwise error
|
* Return: 0 on success, otherwise error
|
||||||
*/
|
*/
|
||||||
int write_mbr_and_gpt_partitions(struct blk_desc *dev_desc, void *buf);
|
int write_mbr_and_gpt_partitions(struct blk_desc *desc, void *buf);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gpt_verify_headers() - Read and check CRC32 of the GPT's header
|
* gpt_verify_headers() - Read and check CRC32 of the GPT's header
|
||||||
@@ -494,24 +491,24 @@ int write_mbr_and_gpt_partitions(struct blk_desc *dev_desc, void *buf);
|
|||||||
*
|
*
|
||||||
* As a side effect if sets gpt_head and gpt_pte so they point to GPT data.
|
* As a side effect if sets gpt_head and gpt_pte so they point to GPT data.
|
||||||
*
|
*
|
||||||
* @dev_desc: block device descriptor
|
* @desc: block device descriptor
|
||||||
* @gpt_head: pointer to GPT header data read from medium
|
* @gpt_head: pointer to GPT header data read from medium
|
||||||
* @gpt_pte: pointer to GPT partition table enties read from medium
|
* @gpt_pte: pointer to GPT partition table enties read from medium
|
||||||
*
|
*
|
||||||
* Return: 0 on success, otherwise error
|
* Return: 0 on success, otherwise error
|
||||||
*/
|
*/
|
||||||
int gpt_verify_headers(struct blk_desc *dev_desc, gpt_header *gpt_head,
|
int gpt_verify_headers(struct blk_desc *desc, gpt_header *gpt_head,
|
||||||
gpt_entry **gpt_pte);
|
gpt_entry **gpt_pte);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gpt_repair_headers() - Function to repair the GPT's header
|
* gpt_repair_headers() - Function to repair the GPT's header
|
||||||
* and partition table entries (PTE)
|
* and partition table entries (PTE)
|
||||||
*
|
*
|
||||||
* @dev_desc: block device descriptor
|
* @desc: block device descriptor
|
||||||
*
|
*
|
||||||
* Return: 0 on success, otherwise error
|
* Return: 0 on success, otherwise error
|
||||||
*/
|
*/
|
||||||
int gpt_repair_headers(struct blk_desc *dev_desc);
|
int gpt_repair_headers(struct blk_desc *desc);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gpt_verify_partitions() - Function to check if partitions' name, start and
|
* gpt_verify_partitions() - Function to check if partitions' name, start and
|
||||||
@@ -521,7 +518,7 @@ int gpt_repair_headers(struct blk_desc *dev_desc);
|
|||||||
* provided in '$partitions' environment variable. Specificially, name, start
|
* provided in '$partitions' environment variable. Specificially, name, start
|
||||||
* and size of the partition is checked.
|
* and size of the partition is checked.
|
||||||
*
|
*
|
||||||
* @dev_desc: block device descriptor
|
* @desc: block device descriptor
|
||||||
* @partitions: partition data read from '$partitions' env variable
|
* @partitions: partition data read from '$partitions' env variable
|
||||||
* @parts: number of partitions read from '$partitions' env variable
|
* @parts: number of partitions read from '$partitions' env variable
|
||||||
* @gpt_head: pointer to GPT header data read from medium
|
* @gpt_head: pointer to GPT header data read from medium
|
||||||
@@ -529,7 +526,7 @@ int gpt_repair_headers(struct blk_desc *dev_desc);
|
|||||||
*
|
*
|
||||||
* Return: 0 on success, otherwise error
|
* Return: 0 on success, otherwise error
|
||||||
*/
|
*/
|
||||||
int gpt_verify_partitions(struct blk_desc *dev_desc,
|
int gpt_verify_partitions(struct blk_desc *desc,
|
||||||
struct disk_partition *partitions, int parts,
|
struct disk_partition *partitions, int parts,
|
||||||
gpt_header *gpt_head, gpt_entry **gpt_pte);
|
gpt_header *gpt_head, gpt_entry **gpt_pte);
|
||||||
|
|
||||||
@@ -540,12 +537,12 @@ int gpt_verify_partitions(struct blk_desc *dev_desc,
|
|||||||
* This function reads the GUID string from a block device whose descriptor
|
* This function reads the GUID string from a block device whose descriptor
|
||||||
* is provided.
|
* is provided.
|
||||||
*
|
*
|
||||||
* @dev_desc: block device descriptor
|
* @desc: block device descriptor
|
||||||
* @guid: pre-allocated string in which to return the GUID
|
* @guid: pre-allocated string in which to return the GUID
|
||||||
*
|
*
|
||||||
* Return: 0 on success, otherwise error
|
* Return: 0 on success, otherwise error
|
||||||
*/
|
*/
|
||||||
int get_disk_guid(struct blk_desc *dev_desc, char *guid);
|
int get_disk_guid(struct blk_desc *desc, char *guid);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -562,12 +559,12 @@ int is_valid_dos_buf(void *buf);
|
|||||||
/**
|
/**
|
||||||
* write_mbr_sector() - write DOS MBR
|
* write_mbr_sector() - write DOS MBR
|
||||||
*
|
*
|
||||||
* @dev_desc: block device descriptor
|
* @desc: block device descriptor
|
||||||
* @buf: buffer which contains the MBR
|
* @buf: buffer which contains the MBR
|
||||||
*
|
*
|
||||||
* Return: 0 on success, otherwise error
|
* Return: 0 on success, otherwise error
|
||||||
*/
|
*/
|
||||||
int write_mbr_sector(struct blk_desc *dev_desc, void *buf);
|
int write_mbr_sector(struct blk_desc *desc, void *buf);
|
||||||
|
|
||||||
int write_mbr_partitions(struct blk_desc *dev,
|
int write_mbr_partitions(struct blk_desc *dev,
|
||||||
struct disk_partition *p, int count, unsigned int disksig);
|
struct disk_partition *p, int count, unsigned int disksig);
|
||||||
|
Reference in New Issue
Block a user