storage: Use -o option to override partition by-name

Instead of hardcoding BY_PARTLABEL_PATH for AOSP,
reuse -o option as suggested by Bjorn to expand John's
patch to find correct partition by-name on newer
kernels (which is /dev/block/platform/soc*/*.*/by-name).

For example: On db845c running v5.4+ kernel we run:
rmtfs -o /dev/block/platform/soc@0/1d84000.ufshc/by-name -P -r -s

Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
This commit is contained in:
Amit Pundir 2020-02-24 13:23:55 +05:30 committed by Bjorn Andersson
parent ad5f456c18
commit 5b1471efa8
2 changed files with 7 additions and 6 deletions

View File

@ -499,7 +499,11 @@ int main(int argc, char **argv)
while ((option = getopt(argc, argv, "o:Prsv")) != -1) {
switch (option) {
/* -o sets the directory where EFS images are stored. */
/*
* -o sets the directory where EFS images are stored,
* or sets the directory from where raw EFS partitions
* can be picked by-name when used with -P option.
*/
case 'o':
storage_root = optarg;
break;

View File

@ -11,11 +11,7 @@
#define MAX_CALLERS 10
#define STORAGE_MAX_SIZE (16 * 1024 * 1024)
#ifndef ANDROID
#define BY_PARTLABEL_PATH "/dev/disk/by-partlabel"
#else
#define BY_PARTLABEL_PATH "/dev/block/by-name"
#endif
#define MIN(x, y) ((x) < (y) ? (x) : (y))
@ -60,7 +56,8 @@ int storage_init(const char *storage_root, bool read_only, bool use_partitions)
storage_dir = storage_root;
if (use_partitions) {
storage_dir = BY_PARTLABEL_PATH;
if (!storage_root)
storage_dir = BY_PARTLABEL_PATH;
storage_use_partitions = true;
}