api_storage: Fix non-first storage device enumeration
authorAndreas Färber <afaerber@suse.de>
Mon, 14 Sep 2015 10:21:34 +0000 (12:21 +0200)
committerTom Rini <trini@konsulko.com>
Tue, 15 Sep 2015 19:05:23 +0000 (15:05 -0400)
When enabling CONFIG_API and chain-loading GRUB2 on jetson-tk1, only the
eMMC would show up as (hd0), but not the SD card, leading to GRUB not
finding its configuration and modules, falling back to a rescue shell.

This is because enum_ended would get set for !more after returning a
cookie for the first MMC device in group 3.

Fix this by properly setting the "more" argument also in the case of the
first storage device of a group.

Signed-off-by: Andreas Färber <afaerber@suse.de>
api/api_storage.c

index b76b07d4c61388f4356b29270eaa07f269ad98c7..ec92ae48d1c21fcc5ffae88bc42d9167171fa9ed 100644 (file)
@@ -112,6 +112,11 @@ static int dev_stor_get(int type, int first, int *more, struct device_info *di)
                else
                        found = 1;
 
+               /* provide hint if there are more devices in
+                * this group to enumerate */
+               if (1 < specs[type].max_dev)
+                       *more = 1;
+
        } else {
                for (i = 0; i < specs[type].max_dev; i++)
                        if (di->cookie == (void *)get_dev(specs[type].name, i)) {