mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
part: Give several functions more useful return values
Several functions in disk/part.c just return -1 on error. This makes them return different errnos for different failures. This helps callers differentiate between failures, even if they cannot read stdout. Signed-off-by: Sean Anderson <sean.anderson@seco.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
d4f22cb39e
commit
59715754e1
1 changed files with 28 additions and 22 deletions
50
disk/part.c
50
disk/part.c
|
@ -355,7 +355,7 @@ int part_get_info(struct blk_desc *dev_desc, int part,
|
|||
}
|
||||
#endif /* CONFIG_HAVE_BLOCK_DEVICE */
|
||||
|
||||
return -1;
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
int part_get_info_whole_disk(struct blk_desc *dev_desc,
|
||||
|
@ -417,7 +417,7 @@ int blk_get_device_by_str(const char *ifname, const char *dev_hwpart_str,
|
|||
*dev_desc = get_dev_hwpart(ifname, dev, hwpart);
|
||||
if (!(*dev_desc) || ((*dev_desc)->type == DEV_TYPE_UNKNOWN)) {
|
||||
debug("** Bad device %s %s **\n", ifname, dev_hwpart_str);
|
||||
dev = -ENOENT;
|
||||
dev = -ENODEV;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
|
@ -441,7 +441,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
|
|||
struct blk_desc **dev_desc,
|
||||
struct disk_partition *info, int allow_whole_dev)
|
||||
{
|
||||
int ret = -1;
|
||||
int ret;
|
||||
const char *part_str;
|
||||
char *dup_str = NULL;
|
||||
const char *dev_str;
|
||||
|
@ -483,7 +483,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
|
|||
if (0 == strcmp(ifname, "ubi")) {
|
||||
if (!ubifs_is_mounted()) {
|
||||
printf("UBIFS not mounted, use ubifsmount to mount volume first!\n");
|
||||
return -1;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
*dev_desc = NULL;
|
||||
|
@ -505,6 +505,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
|
|||
/* If still no dev_part_str, it's an error */
|
||||
if (!dev_part_str) {
|
||||
printf("** No device specified **\n");
|
||||
ret = -ENODEV;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
|
@ -521,8 +522,10 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
|
|||
|
||||
/* Look up the device */
|
||||
dev = blk_get_device_by_str(ifname, dev_str, dev_desc);
|
||||
if (dev < 0)
|
||||
if (dev < 0) {
|
||||
ret = dev;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* Convert partition ID string to number */
|
||||
if (!part_str || !*part_str) {
|
||||
|
@ -539,6 +542,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
|
|||
if (*ep || (part == 0 && !allow_whole_dev)) {
|
||||
printf("** Bad partition specification %s %s **\n",
|
||||
ifname, dev_part_str);
|
||||
ret = -ENOENT;
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
@ -552,6 +556,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
|
|||
if (!(*dev_desc)->lba) {
|
||||
printf("** Bad device size - %s %s **\n", ifname,
|
||||
dev_str);
|
||||
ret = -EINVAL;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
|
@ -563,6 +568,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
|
|||
if ((part > 0) || (!allow_whole_dev)) {
|
||||
printf("** No partition table - %s %s **\n", ifname,
|
||||
dev_str);
|
||||
ret = -EPROTONOSUPPORT;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
|
@ -631,7 +637,6 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
|
|||
*info = tmpinfo;
|
||||
} else {
|
||||
printf("** No valid partitions found **\n");
|
||||
ret = -1;
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
@ -639,7 +644,7 @@ int blk_get_device_part_str(const char *ifname, const char *dev_part_str,
|
|||
printf("** Invalid partition type \"%.32s\""
|
||||
" (expect \"" BOOT_PART_TYPE "\")\n",
|
||||
info->type);
|
||||
ret = -1;
|
||||
ret = -EINVAL;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
|
@ -675,7 +680,7 @@ int part_get_info_by_name_type(struct blk_desc *dev_desc, const char *name,
|
|||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
int part_get_info_by_name(struct blk_desc *dev_desc, const char *name,
|
||||
|
@ -705,7 +710,7 @@ static int part_get_info_by_dev_and_name(const char *dev_iface,
|
|||
{
|
||||
char *ep;
|
||||
const char *part_str;
|
||||
int dev_num;
|
||||
int dev_num, ret;
|
||||
|
||||
part_str = strchr(dev_part_str, '#');
|
||||
if (!part_str || part_str == dev_part_str)
|
||||
|
@ -721,13 +726,12 @@ static int part_get_info_by_dev_and_name(const char *dev_iface,
|
|||
*dev_desc = blk_get_dev(dev_iface, dev_num);
|
||||
if (!*dev_desc) {
|
||||
printf("Could not find %s %d\n", dev_iface, dev_num);
|
||||
return -EINVAL;
|
||||
return -ENODEV;
|
||||
}
|
||||
if (part_get_info_by_name(*dev_desc, part_str, part_info) < 0) {
|
||||
ret = part_get_info_by_name(*dev_desc, part_str, part_info);
|
||||
if (ret < 0)
|
||||
printf("Could not find \"%s\" partition\n", part_str);
|
||||
return -EINVAL;
|
||||
}
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
int part_get_info_by_dev_and_name_or_num(const char *dev_iface,
|
||||
|
@ -735,21 +739,23 @@ int part_get_info_by_dev_and_name_or_num(const char *dev_iface,
|
|||
struct blk_desc **dev_desc,
|
||||
struct disk_partition *part_info)
|
||||
{
|
||||
int ret;
|
||||
|
||||
/* Split the part_name if passed as "$dev_num#part_name". */
|
||||
if (!part_get_info_by_dev_and_name(dev_iface, dev_part_str,
|
||||
dev_desc, part_info))
|
||||
return 0;
|
||||
ret = part_get_info_by_dev_and_name(dev_iface, dev_part_str,
|
||||
dev_desc, part_info);
|
||||
if (ret >= 0)
|
||||
return ret;
|
||||
/*
|
||||
* Couldn't lookup by name, try looking up the partition description
|
||||
* directly.
|
||||
*/
|
||||
if (blk_get_device_part_str(dev_iface, dev_part_str,
|
||||
dev_desc, part_info, 1) < 0) {
|
||||
ret = blk_get_device_part_str(dev_iface, dev_part_str,
|
||||
dev_desc, part_info, 1);
|
||||
if (ret < 0)
|
||||
printf("Couldn't find partition %s %s\n",
|
||||
dev_iface, dev_part_str);
|
||||
return -EINVAL;
|
||||
}
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
void part_set_generic_name(const struct blk_desc *dev_desc,
|
||||
|
|
Loading…
Reference in a new issue