partname: allow skipping existing 'rootfs_data' partition
authorDaniel Golle <daniel@makrotopia.org>
Fri, 19 Mar 2021 12:13:33 +0000 (12:13 +0000)
committerDaniel Golle <daniel@makrotopia.org>
Fri, 19 Mar 2021 13:26:49 +0000 (13:26 +0000)
Apparently some devices with eMMC (e.g. ZyXEL NBG6817) got an exsiting
GPT partition called 'rootfs_data'. This partition is then selected
as rootfs_data eventhough it may not be suitable for that (too small)
or serve another purpose (ie. used by vendor firmware).
To avoid this, check if the kernel cmdline contains a variable
fstools_ignore_partname=1 and if so, skip partname detection of volumes
alltogether.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
libfstools/partname.c

index 4560125879c6b29b982c4af7d3937d3be1e305f6..5d4fde5c8cb85c7cb0c21b14c3b82bcf7c058ca1 100644 (file)
@@ -85,7 +85,7 @@ static char* get_cmdline_val(const char* name, char* out, int len)
                        continue;
 
                strncpy(out, &sep[1], len);
-               out[len-1] = 0;
+               out[len-1] = '\0';
                return out;
        }
 
@@ -120,6 +120,11 @@ static struct volume *partname_volume_find(char *name)
        bool found = false;
        glob_t gl;
 
+       if (get_cmdline_val("fstools_ignore_partname", rootparam, sizeof(rootparam))) {
+               if (!strcmp("1", rootparam))
+                       return NULL;
+       }
+
        if (get_cmdline_val("root", rootparam, sizeof(rootparam))) {
                rootdev = rootdevname(rootparam);
                /* find partition on same device as rootfs */