Hi All,
I am attempting a simple disk based FS written as a module.
As part of registering the filesystem, I read the superblock from the disk and use the information from the superblock on disk.
I use sb_read to read the super block block.
But on attempting to read an inode(root) from disk, which is on
another block on the disk, the call to sb_bread hangs and I get a stack
trace
along with a message saying that there is a soft lockup.
I use sb_read to read the Inode block.
Following is the stack trace:
Sep 2 09:04:48 localhost kernel: BUG: soft lockup detected on CPU#0!
Sep 2 09:04:48 localhost kernel: [<c0405e4e>] show_trace_log_lvl+0x1a/0x2f
Sep 2 09:04:48 localhost kernel: [<c0406450>] show_trace+0x12/0x14
Sep 2 09:04:48 localhost kernel: [<c04064d4>] dump_stack+0x16/0x18
Sep 2 09:04:48 localhost kernel: [<c04563b5>] softlockup_tick+0xa8/0xba
Sep 2 09:04:48 localhost kernel: [<c042f992>] run_local_timers+0x12/0x14
Sep 2 09:04:48 localhost kernel: [<c042fd4b>] update_process_times+0x3e/0x63
Sep 2 09:04:48 localhost kernel: [<c043f550>] tick_sched_timer+0x5d/0xa1
Sep 2 09:04:48 localhost kernel: [<c043bc73>] hrtimer_interrupt+0x128/0x1b5
Sep 2 09:04:48 localhost kernel: [<c0419db7>] smp_apic_timer_interrupt+0x72/0x84
Sep 2 09:04:48 localhost kernel: [<c0405910>] apic_timer_interrupt+0x28/0x30
Sep 2 09:04:48 localhost kernel: [<c045aa11>] find_lock_page+0x7f/0x87
Sep 2 09:04:48 localhost kernel: [<c045b379>] find_or_create_page+0x1e/0x89
Sep 2 09:04:48 localhost kernel: [<c0493ec6>] __getblk+0x178/0x28b
Sep 2 09:04:48 localhost kernel: [<c049532a>] __bread+0x12/0xa7
Sep 2 09:04:48 localhost kernel: [<e0bf3373>] extdfs_read_inode+0xb7/0x15c [extd]
Sep 2 09:04:48 localhost kernel: [<e0bf3641>] extd_fill_super+0x191/0x22d [extd]
Sep 2 09:04:48 localhost kernel: [<c0479b22>] get_sb_bdev+0xeb/0x136
Sep 2 09:04:48 localhost kernel: [<e0bf302d>] extd_get_sb+0x21/0x27 [extd]
Sep 2 09:04:48 localhost kernel: [<c04796da>] vfs_kern_mount+0x81/0xf1
Sep 2 09:04:48 localhost kernel: [<c0479792>] do_kern_mount+0x30/0x42
Sep 2 09:04:48 localhost kernel: [<c048bc04>] do_mount+0x601/0x678
Sep 2 09:04:48 localhost kernel: [<c048bcea>] sys_mount+0x6f/0xa4
Sep 2 09:04:48 localhost kernel: [<c0404eb8>] syscall_call+0x7/0xb
Please help me fiond ways to avoid soft lockups.
Or whatever you think is not the problem with my code.
Dheeraj