I am working on an embedded device that uses kernel 2.6.21 and ARM CPU.
The device has SDHC card with two partitions. One partition is formatted with Ext3. The other partition is formatted with FAT32 and most of the time is not mounted at all (not used).
The Ext3 partition is mounted with datamode=ordered.
The problem I am experiencing is that occasionally kjournald seems to block and as a result all access to the Ext3 partition stops.
It looks like this happens when sync() is called from an application. Some of the applications that run on the device write to log files on the Ext3 partition. Every write is usually less than 100 bytes and looks something like that:
fopen();
fprintf() - one or more times
fclose();
sync();
For example here is the output from SysRq-t:
kjournald D C0284784 0 408 6 (L-TLB)
[<c0284240>] (schedule+0x0/0x64c) from [<c00f8724>] (journal_commit_transaction+0x16c/0x1568)
[<c00f85b8>] (journal_commit_transaction+0x0/0x1568) from [<c00fd99c>] (kjournald+0xbc/0x260)
[<c00fd8e0>] (kjournald+0x0/0x260) from [<c0070d9c>] (kthread+0xe8/0x128)
[<c0070cb4>] (kthread+0x0/0x128) from [<c005d980>] (do_exit+0x0/0x8c8)
Everytime the problem happens, kjournald is stuck in journal_commit_transaction.
I am trying to figure out what is causing this and to fix it (one way or another).
Searching on Internet revealed that fsync() and Ext3 will actually sync everything. This is not a problem in my case, as long as everything continues normally after that.
Also, performance related issues other people reported are not real problems in my case.
Any help is appreciated.
Thanks,
Dimitar
_______________________________________________ Ext3-users mailing list Ext3-users@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/ext3-users