Hi Daniel, Based on the last comment from Steve (fstools patch was not reverted), I'm not sure if that's the root cause. The kernel patch (which when reverted makes rootfs_data writable again) only enforces the parent mtd access mode on the sub-partitions. When I look at the DTS file for this device I see that "firmware" is read-write, so I wonder if there's something else marking these as read-only.
Best regards, Bruno Pena On Tue, Jan 21, 2020, 11:55 Daniel Golle <dan...@makrotopia.org> wrote: > Hi Bruno, > Hi Steve, > > On Tue, Jan 21, 2020 at 11:24:28AM +0100, Bruno Pena wrote: > > Please also include the contents of "dmesg" and of the files > > "/proc/cmdline" and "/proc/mtd". > > > > Best regards, > > Bruno Pena > > > > On Tue, Jan 21, 2020, 11:01 Bruno Pena <brunomp...@gmail.com> wrote: > > > > > Hi Steve, > > > > > > These patches should only impact partitions that are marked as read > only. > > > Can you please provide more details about your configuration? > > > (architecture, device profile, mtd layout, the mtd partition > generating the > > > error) > > I think this is because opening /dev/mtdX will fail as read-write > but will succeed in read-only mode. Hence /dev/mtdblockX is not even > considered which is a change from the previous behaviour. > > > > > > > Best regards, > > > Bruno Pena > > > > > > On Tue, Jan 21, 2020, 10:51 Steve Brown <sbr...@ewol.com> wrote: > > > > > >> Hi Bruno, > > >> > > >> On Sat, 2020-01-04 at 12:52 +0100, Bruno Pena wrote: > > >> > This patch enables fstools to open read-only MTD partitions, which > in > > >> > turn also enables OpenWrt to boot from read-only partitions. > > >> > > > >> > The use of read-only partitions is of special importance for WiFi- > > >> > only > > >> > devices, where a protected read-only recovery image can be used in > > >> > case > > >> > something goes wrong with the main firmware (eg. user gets locked > out > > >> > due to bad settings, flash of an unbootable dev firmware, etc). > > >> > > > >> > Signed-off-by: Bruno Pena <brunomp...@gmail.com> > > >> > --- > > >> > libfstools/mtd.c | 19 +++++++++++++++---- > > >> > 1 file changed, 15 insertions(+), 4 deletions(-) > > >> > > > >> > diff --git a/libfstools/mtd.c b/libfstools/mtd.c > > >> > index 77c71ee..aae633e 100644 > > >> > --- a/libfstools/mtd.c > > >> > +++ b/libfstools/mtd.c > > >> > @@ -36,20 +36,31 @@ struct mtd_volume { > > >> > > > >> > static struct driver mtd_driver; > > >> > > > >> > +static int mtd_open_device(const char *dev) > > >> > +{ > > >> > + int ret; > > >> > + > > >> > + ret = open(dev, O_RDWR | O_SYNC); > > >> > + if (ret < 0) > > >> > + ret = open(dev, O_RDONLY); > > >> > + > > >> > + return ret; > > >> > +} > > >> > + > > >> > static int mtd_open(const char *mtd, int block) > > >> > { > > >> > FILE *fp; > > >> > char dev[PATH_MAX]; > > >> > - int i, ret, flags = O_RDWR | O_SYNC; > > >> > + int i, ret; > > >> > > > >> > if ((fp = fopen("/proc/mtd", "r"))) { > > >> > while (fgets(dev, sizeof(dev), fp)) { > > >> > if (sscanf(dev, "mtd%d:", &i) && strstr(dev, > > >> > mtd)) { > > >> > snprintf(dev, sizeof(dev), > > >> > "/dev/mtd%s/%d", (block ? "block" : ""), i); > > >> > - ret = open(dev, flags); > > >> > + ret = mtd_open_device(dev); > > >> > if (ret < 0) { > > >> > snprintf(dev, sizeof(dev), > > >> > "/dev/mtd%s%d", (block ? "block" : ""), i); > > >> > - ret = open(dev, flags); > > >> > + ret = mtd_open_device(dev); > > >> > } > > >> > fclose(fp); > > >> > return ret; > > >> > @@ -58,7 +69,7 @@ static int mtd_open(const char *mtd, int block) > > >> > fclose(fp); > > >> > } > > >> > > > >> > - return open(mtd, flags); > > >> > + return mtd_open_device(mtd); > > >> > } > > >> > > > >> > static void mtd_volume_close(struct mtd_volume *p) > > >> > > >> > > >> This patch and related commit de80424f706682e8bba27c60bcd2a9c1b4a5e875 > > >> break the jffs erase on my Archer a7 v5. > > >> > > >> [ 11.787856] jffs2_scan_eraseblock(): End of filesystem marker > > >> found at 0x10000 > > >> [ 11.795357] jffs2_build_filesystem(): unlocking the mtd > device... > > >> [ 11.795390] done. > > >> [ 11.803771] jffs2_build_filesystem(): erasing all blocks after > the > > >> end marker... > > >> [ 11.803781] jffs2: Erase at 0x009e0000 failed immediately: > -EROFS. > > >> Is the sector locked? > > >> ------------- > > >> [ 13.138841] jffs2: Erase at 0x00010000 failed immediately: > -EROFS. > > >> Is the sector locked? > > >> [ 13.147188] done. > > >> [ 13.149202] jffs2: notice: (487) jffs2_build_xattr_subsystem: > > >> complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 > orphan) and > > >> 0 of xref (0 . > > >> [ 13.165896] mount_root: unable to set filesystem state > > >> [ 13.171443] mount_root: switching to jffs2 overlay > > >> [ 13.201867] overlayfs: failed to resolve '/overlay/upper': -2 > > >> [ 13.223939] mount_root: mount failed: > > >> lowerdir=/,upperdir=/overlay/upper,workdir=/overlay/work, options No > such > > >> device > > >> [ 13.235145] mount_root: switching to jffs2 failed - fallback to > > >> ramoverlay > > >> > > >> Verified by reverting de80424f7. > > >> > > >> Steve > > >> > > >> > > >> > > > _______________________________________________ > > openwrt-devel mailing list > > openwrt-devel@lists.openwrt.org > > https://lists.openwrt.org/mailman/listinfo/openwrt-devel > >
_______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel