linux/fs/logfs
Prasad Joshi ddb24bbac3 logfs: create a pagecache page if it is not present
While writing the partial journal entries we assumed that the page
associated with the journal would always in locatable. This incorrect
assumption resulted in the following BUG

kernel BUG at /home/benixon/WD_SMR/kernels/linux-3.3.7-logfs/fs/logfs/journal.c:569!
EIP is at logfs_write_area+0xb6/0x109 [logfs]
EAX: 00000000 EBX: 00000000 ECX: ef6efea4 EDX: 00000000
ESI: 001b9000 EDI: f009e000 EBP: c3c13f14 ESP: c3c13ef0
DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
Process sync (pid: 1799, ti=c3c12000 task=f07825b0 task.ti=c3c12000)
Stack:
01001000 c3c13f26 781b9000 00000000 f009e000 f7286000 f1f83400 f8445071
f1f83400 c3c13f30 f8445ae9 c3c13f20 0000100a 000ee000 f009e000 00000001
c3c13f5c f8445d17 c05eb0ee 00000000 f1f83400 ef718000 f009e25c ea9c3d80
Call Trace:
[<f8445071>] ? account_shadow+0x16d/0x16d [logfs]
[<f8445ae9>] logfs_write_je+0x2a/0x44 [logfs]
[<f8445d17>] logfs_write_anchor+0x114/0x228 [logfs]
[<c05eb0ee>] ? empty+0x5/0x5
[<f8444522>] logfs_sync_fs+0x1e/0x31 [logfs]
[<c051be66>] __sync_filesystem+0x5d/0x6f
[<c051be8d>] sync_one_sb+0x15/0x17
[<c04ff8b0>] iterate_supers+0x59/0x9a
[<c051be78>] ? __sync_filesystem+0x6f/0x6f
[<c051befc>] sys_sync+0x29/0x4f
[<c084285f>] sysenter_do_call+0x12/0x28
EIP: [<f8445127>] logfs_write_area+0xb6/0x109 [logfs] SS:ESP 0068:c3c13ef0
---[ end trace ef6e9ef52601a945 ]---

The fix is to create the pagecache page if it is not locatable.

Reported-and-tested-by: Benixon Dhas <Benixon.Dhas@wdc.com>
Signed-off-by: Prasad Joshi <prasadjoshi.linux@gmail.com>
2012-07-23 09:18:14 +05:30
..
compr.c zlib: slim down zlib_deflate() workspace when possible 2011-03-22 17:44:17 -07:00
dev_bdev.c logfs: initialize the number of iovecs in bio 2012-04-02 18:04:00 +05:30
dev_mtd.c mtd: fix merge conflict resolution breakage 2012-02-01 11:10:24 -08:00
dir.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2012-03-21 13:36:41 -07:00
file.c logfs: take write mutex lock during fsync and sync 2012-01-28 11:36:06 +05:30
gc.c logfs: Prevent memory corruption 2012-01-28 11:24:21 +05:30
inode.c logfs: destroy the reserved inodes while unmounting 2012-04-02 09:20:33 +05:30
journal.c logfs: create a pagecache page if it is not present 2012-07-23 09:18:14 +05:30
Kconfig [LogFS] add new flash file system 2009-11-20 20:13:39 +01:00
logfs_abi.h fix "seperate" typos in comments 2010-05-10 11:56:30 +02:00
logfs.h Pull request from git://github.com/prasad-joshi/logfs_upstream.git 2012-01-31 09:23:59 -08:00
Makefile [LogFS] add new flash file system 2009-11-20 20:13:39 +01:00
readwrite.c logfs: destroy the reserved inodes while unmounting 2012-04-02 09:20:33 +05:30
segment.c logfs: destroy the reserved inodes while unmounting 2012-04-02 09:20:33 +05:30
super.c logfs: missing cleanup on register_filesystem() failure 2012-03-20 21:29:48 -04:00