On 29/03/18 10:25, rosys...@rosinson.com wrote:
When firmware is new flashed and reboot with a storage device plug in its usb
interface. Though the filesystem is not ready (FS_STATE_UNKNOWN), the
/dev/sda1 still mount on /mnt/sda1 by block-mount, then the system switching 
jffs...

root@OpenWrt:~# dmesg
......
[   32.224522] jffs2_scan_eraseblock(): End of filesystem marker found at 0x0
[   32.270514] jffs2_build_filesystem(): unlocking the mtd device...
[   32.278711] jffs2_build_filesystem(): erasing all blocks after the end 
marker...

root@OpenWrt:~# mount
......
/dev/sda1 on /mnt/sda1 type exfat 
(rw,relatime,fmask=0000,dmask=0000,allow_utime=0022,iocharset=utf8,namecase=0,errors=remount-ro)
mountd(pid1314) on /tmp/run/blockd type autofs 
(rw,relatime,fd=7,pgrp=1,timeout=30,minproto=5,maxproto=5,indirect)

After few miniutes, when filesystem is ready (FS_STATE_READY, /overlay/.fs_state 
-> 2)
the /dev/sda1 lost its mount point

root@OpenWrt:~# dmesg

...

[  207.439407] jffs2: notice: (1336) jffs2_build_xattr_subsystem: complete 
building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 
dead, 0 orphan) found.

root@OpenWrt:~# mount
......
**no /mnt/sda1 found**
......

Signed-off-by: Rosy Song <rosys...@rosinson.com>

Hi
the description explains the bug but fails to expalin how the patch solves the problem. I am also struggeling to understand the problem. You are trying to use sda1 as jffs2 but there is a exfat already present so that they collide ?
    John

---
  mount_root.c | 11 ++++++++++-
  1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/mount_root.c b/mount_root.c
index dffb0a6..110e4fd 100644
--- a/mount_root.c
+++ b/mount_root.c
@@ -101,6 +101,7 @@ stop(int argc, char *argv[1])
  static int
  done(int argc, char *argv[1])
  {
+       int ret;
        struct volume *v = volume_find("rootfs_data");
  if (!v)
@@ -109,7 +110,15 @@ done(int argc, char *argv[1])
        switch (volume_identify(v)) {
        case FS_NONE:
        case FS_DEADCODE:
-               return jffs2_switch(v);
+               ret = jffs2_switch(v);
+               /*
+               * Devices mounted under /mnt will lost their mount point(see 
switch2jffs())
+               * if the filesystem's(/overlay) state is not FS_STATE_READY,
+               * this action can fix it.
+               */
+               if (!access("/sbin/block", X_OK))
+                       system("/sbin/block mount");
+               return ret;
  case FS_EXT4:
        case FS_F2FS:
--
2.13.3



Lede-dev mailing list
Lede-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/lede-dev
_______________________________________________
Lede-dev mailing list
Lede-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/lede-dev


_______________________________________________
Lede-dev mailing list
Lede-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/lede-dev

Reply via email to