diff options
author | Rafał Miłecki <rafal@milecki.pl> | 2020-05-02 14:05:11 +0200 |
---|---|---|
committer | Rafał Miłecki <rafal@milecki.pl> | 2020-05-05 08:49:36 +0200 |
commit | 8b9e601160712f74ff46313579d0225a7f90ca3c (patch) | |
tree | 9efae533ada1f9581ea4937132e9f5de2e828001 | |
parent | 37c9148a3ae17665e75f99b459b6ff2b461d6739 (diff) | |
download | fstools-8b9e601160712f74ff46313579d0225a7f90ca3c.tar.gz |
block: always use st_dev (device ID) of / when looking for root
Use this method even if UBIFS extroot support is enabled. This is needed
on x86 systems (using F2FS for overlay) as they may still come with F2FS
enabled.
Ref: https://bugs.openwrt.org/index.php?do=details&task_id=2231
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
-rw-r--r-- | block.c | 26 |
1 files changed, 11 insertions, 15 deletions
@@ -1316,8 +1316,7 @@ static int find_block_ubi_RO(libubi_t libubi, char *name, char *part, int plen) return err; } - -#else +#endif static int find_root_dev(char *buf, int len) { @@ -1348,8 +1347,6 @@ static int find_root_dev(char *buf, int len) return -1; } -#endif - static int test_fs_support(const char *name) { char line[128], *p; @@ -1392,26 +1389,25 @@ static int check_extroot(char *path) char devpath[32]; char tag[64]; FILE *fp; + int err; + err = find_block_mtd("\"rootfs\"", devpath, sizeof(devpath)); #ifdef UBIFS_EXTROOT - if (find_block_mtd("\"rootfs\"", devpath, sizeof(devpath))) { - int err = -1; + if (err) { libubi_t libubi; libubi = libubi_open(); err = find_block_ubi_RO(libubi, "rootfs", devpath, sizeof(devpath)); libubi_close(libubi); - if (err) - return -1; - } -#else - if (find_block_mtd("\"rootfs\"", devpath, sizeof(devpath))) { - if (find_root_dev(devpath, sizeof(devpath))) { - ULOG_ERR("extroot: unable to determine root device\n"); - return -1; - } } #endif + if (err) { + err = find_root_dev(devpath, sizeof(devpath)); + } + if (err) { + ULOG_ERR("extroot: unable to determine root device\n"); + return -1; + } /* Find root device probe_info so we know its UUID */ list_for_each_entry(tmp, &devices, list) { |