Skip to contentSkip to conversation

Jffs2 soft lockup on 2.6.31-rc5

DISCUSSION Felix Radensky 2 participants 3 messages Aug 4, 2009 Memory technology devices (MTD)

lore
Share & tools
lore
#0 lore raw

Hi,

I'm getting soft lockups on Freescale MPC8536DS board running 2.6.31-rc5. MTD device is 60M partition on Spansion 128MB NOR flash (S29GL01GP).

To reproduce the problem, I run

flash_eraseall /dev/mtd4
mount -t jffs2 /dev/mtdblock4 /mnt
sync

The lockup messages look like this:

INFO: task sync:1096 blocked for more than 120 seconds.
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Call Trace:

[df04dd50] [28022248] 0x28022248 (unreliable) [df04de10] [c00078e4] __switch_to+0x64/0xd0 [df04de20] [c029df08] schedule+0x188/0x2e0 [df04de50] [c029ebc8] __mutex_lock_slowpath+0xd4/0x1f8 [df04dea0] [c029ed04] mutex_lock+0x18/0x34 [df04dec0] [c007ed64] lock_super+0x28/0x38 [df04ded0] [c0111148] jffs2_write_super+0x1c/0x6c [df04dee0] [c01111b0] jffs2_sync_fs+0x18/0x4c [df04df00] [c009e70c] __sync_filesystem+0x3c/0x5c [df04df10] [c009e7f8] sync_filesystems+0xcc/0x10c [df04df30] [c009e91c] sys_sync+0x1c/0x50 [df04df40] [c000f7e4] ret_from_syscall+0x0/0x3c

The system does not lock completely, the sync returns after 2 lockup messages and jffs2 partition is fully usable.

The problem is not reproducible if I use ubifs or just copy data to /dev/mtd4. So it seems the problem is related to jffs2. Any ideas what can be wrong and how to fix it ?

Thanks.

Felix.

#1 lore raw
Quoted 35 lines

Hi,

I'm getting soft lockups on Freescale MPC8536DS board running 2.6.31-rc5. MTD device is 60M partition on Spansion 128MB NOR flash (S29GL01GP).

To reproduce the problem, I run

flash_eraseall /dev/mtd4
mount -t jffs2 /dev/mtdblock4 /mnt
sync

The lockup messages look like this:

INFO: task sync:1096 blocked for more than 120 seconds.
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Call Trace:

[df04dd50] [28022248] 0x28022248 (unreliable) [df04de10] [c00078e4] __switch_to+0x64/0xd0 [df04de20] [c029df08] schedule+0x188/0x2e0 [df04de50] [c029ebc8] __mutex_lock_slowpath+0xd4/0x1f8 [df04dea0] [c029ed04] mutex_lock+0x18/0x34 [df04dec0] [c007ed64] lock_super+0x28/0x38 [df04ded0] [c0111148] jffs2_write_super+0x1c/0x6c [df04dee0] [c01111b0] jffs2_sync_fs+0x18/0x4c [df04df00] [c009e70c] __sync_filesystem+0x3c/0x5c [df04df10] [c009e7f8] sync_filesystems+0xcc/0x10c [df04df30] [c009e91c] sys_sync+0x1c/0x50 [df04df40] [c000f7e4] ret_from_syscall+0x0/0x3c

The system does not lock completely, the sync returns after 2 lockup messages
and jffs2 partition is fully usable.

Quoted 5 lines

The problem is not reproducible if I use ubifs or just copy data to /dev/mtd4.
So it seems the problem is related to jffs2. Any ideas what can be wrong and
how to fix it ?

My guess is that jffs2 is busy reerasing all blocks and marking them with clean markers. Can you make flash_eraseall write JFFS2 clean markers after erasing the block?

Jocke

#2 lore raw
Quoted 41 lines · Joakim Tjernlund
Quoted 34 lines

Hi,

I'm getting soft lockups on Freescale MPC8536DS board running 2.6.31-rc5. MTD device is 60M partition on Spansion 128MB NOR flash (S29GL01GP).

To reproduce the problem, I run

flash_eraseall /dev/mtd4
mount -t jffs2 /dev/mtdblock4 /mnt
sync

The lockup messages look like this:

INFO: task sync:1096 blocked for more than 120 seconds.
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Call Trace:

[df04dd50] [28022248] 0x28022248 (unreliable) [df04de10] [c00078e4] __switch_to+0x64/0xd0 [df04de20] [c029df08] schedule+0x188/0x2e0 [df04de50] [c029ebc8] __mutex_lock_slowpath+0xd4/0x1f8 [df04dea0] [c029ed04] mutex_lock+0x18/0x34 [df04dec0] [c007ed64] lock_super+0x28/0x38 [df04ded0] [c0111148] jffs2_write_super+0x1c/0x6c [df04dee0] [c01111b0] jffs2_sync_fs+0x18/0x4c [df04df00] [c009e70c] __sync_filesystem+0x3c/0x5c [df04df10] [c009e7f8] sync_filesystems+0xcc/0x10c [df04df30] [c009e91c] sys_sync+0x1c/0x50 [df04df40] [c000f7e4] ret_from_syscall+0x0/0x3c

The system does not lock completely, the sync returns after 2 lockup messages
and jffs2 partition is fully usable.

Quoted 6 lines

The problem is not reproducible if I use ubifs or just copy data to /dev/mtd4.
So it seems the problem is related to jffs2. Any ideas what can be wrong and
how to fix it ?

Quoted 3 lines

My guess is that jffs2 is busy reerasing all blocks and marking them with clean markers. Can you make flash_eraseall write JFFS2 clean markers after erasing the block?

You mean, using flash_eraseall -j ? I thought it's always safer to use erase+mount+sync, as this way there's no chance to have mismatch in clean marker layout. Also, there are no lockups with 2.6.28.

Felix.

Quoted 3 lines

Jocke