Messages in this thread | | | Subject | ARM: nommu: Boot hang after VFS: Mounted root (ext2 filesystem) on device 1:0. | From | Axel Lin <> | Date | Mon, 25 Nov 2013 23:26:00 +0800 |
| |
Hi, I got hangup at boot after "VFS: Mounted root (ext2 filesystem) on device 1:0.". I'm using ext2 initrd as root. It seems hangup after mount root, but in the progress of mounting devtmpfs.
After debug it, I found it hangs at calling page_cache_release. Note, I'm testing on an nommu platform (arm7tdmi) using current Linus' tree with patches for this SoC.
Breakpoint 3, ext2_inode_by_name (dir=<optimized out>, child=<optimized out>) at fs/ext2/dir.c:452 452 ext2_put_page(page); (gdb) bt #0 ext2_inode_by_name (dir=<optimized out>, child=<optimized out>) at fs/ext2/dir.c:452 #1 0x000b0218 in ext2_lookup (dir=0x1cbf8e0, dentry=0x161d390, flags=<optimized out>) at fs/ext2/namei.c:66 #2 0x0006a160 in lookup_real (dir=<optimized out>, dentry=0x161d390, flags=<optimized out>) at fs/namei.c:1317 #3 0x0006a5fc in __lookup_hash (name=<optimized out>, base=0x161d228, flags=1) at fs/namei.c:1335 #4 0x0006b828 in lookup_slow (nd=0x1c19e58, path=0x1c19de0) at fs/namei.c:1446 #5 0x0006c914 in walk_component (follow=1, path=0x1c19dd8, nd=0x1c19e58) at fs/namei.c:1526 #6 lookup_last (path=0x1c19dd8, nd=0x1c19e58) at fs/namei.c:1904 #7 path_lookupat (dfd=<optimized out>, name=0x1640010 "dev", flags=<optimized out>, nd=0x1c19e58) at fs/namei.c:1939 #8 0x0006cf30 in filename_lookup (dfd=-100, name=0x1c19e30, flags=1, nd=0x1c19e58) at fs/namei.c:1981 #9 0x0006d000 in do_path_lookup (dfd=-100, name=0x1640010 "dev", flags=1, nd=0x1c19e58) at fs/namei.c:1998 #10 0x0006d218 in kern_path (name=<optimized out>, flags=<optimized out>, path=0x1c19ee0) at fs/namei.c:2027 #11 0x0007dbd0 in do_mount (dev_name=0x161d380 "devtmpfs", dir_name=0x1640010 "dev", type_page=0x161d340 "devtmpfs", flags=32768, data_page=0x0 <__vectors_start>) at fs/namespace.c:2363 #12 0x0007e71c in SYSC_mount (data=0x378620 <reset_devices>, flags=32768, type=<optimized out>, dir_name=<optimized out>, dev_name=0x30a0da "devtmpfs") at fs/namespace.c:2608 #13 SyS_mount (dev_name=<optimized out>, dir_name=<optimized out>, type=<optimized out>, flags=<optimized out>, data=0) at fs/namespace.c:2582 #14 0x00123444 in devtmpfs_mount (mntdir=<optimized out>) at drivers/base/devtmpfs.c:363 #15 0x0033a394 in prepare_namespace () at init/do_mounts.c:593 #16 0x00339cd0 in kernel_init_freeable () at init/main.c:935 #17 0x0028b7c0 in kernel_init (unused=<optimized out>) at init/main.c:844 #18 0x00009000 in ret_from_fork () at arch/arm/kernel/entry-common.S:91 #19 0x00009000 in ret_from_fork () at arch/arm/kernel/entry-common.S:91 Backtrace stopped: previous frame identical to this frame (corrupt stack?) (gdb) s ext2_put_page (page=<optimized out>) at fs/ext2/dir.c:70 70 page_cache_release(page); (gdb) l 65 } 66 67 static inline void ext2_put_page(struct page *page) 68 { 69 kunmap(page); 70 page_cache_release(page); 71 } 72 73 static inline unsigned long dir_pages(struct inode *inode) 74 { (gdb) s ext2_inode_by_name (dir=<optimized out>, child=<optimized out>) at fs/ext2/dir.c:451 451 res = le32_to_cpu(de->inode); (gdb) s 452 ext2_put_page(page); (gdb) s ext2_put_page (page=0xac4e0 <ext2_inode_by_name+12>) at fs/ext2/dir.c:70 70 page_cache_release(page); (gdb) s <<< HANG UP
I have no idea why it hangs at page_cache_release call. I appreciate for comments and advices to debug this.
Thanks, Axel
| |