git.openpandora.org
/
pandora-kernel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
934eed3
)
logfs: take write mutex lock during fsync and sync
author
Prasad Joshi
<prasadjoshi.linux@gmail.com>
Sat, 28 Jan 2012 06:06:06 +0000
(11:36 +0530)
committer
Prasad Joshi
<prasadjoshi.linux@gmail.com>
Sat, 28 Jan 2012 06:06:06 +0000
(11:36 +0530)
LogFS uses super->s_write_mutex while writing data to disk. Taking the
same mutex lock in sync and fsync code path solves the following BUG:
------------[ cut here ]------------
kernel BUG at /home/prasad/logfs/dev_bdev.c:134!
Pid: 2387, comm: flush-253:16 Not tainted 3.0.0+ #4 Bochs Bochs
RIP: 0010:[<
ffffffffa007deed
>] [<
ffffffffa007deed
>]
bdev_writeseg+0x25d/0x270 [logfs]
Call Trace:
[<
ffffffffa007c381
>] logfs_open_area+0x91/0x150 [logfs]
[<
ffffffff8128dcb2
>] ? find_level.clone.9+0x62/0x100
[<
ffffffffa007c49c
>] __logfs_segment_write.clone.20+0x5c/0x190 [logfs]
[<
ffffffff810ef005
>] ? mempool_kmalloc+0x15/0x20
[<
ffffffff810ef383
>] ? mempool_alloc+0x53/0x130
[<
ffffffffa007c7a4
>] logfs_segment_write+0x1d4/0x230 [logfs]
[<
ffffffffa0078f8e
>] logfs_write_i0+0x12e/0x190 [logfs]
[<
ffffffffa0079300
>] __logfs_write_rec+0x140/0x220 [logfs]
[<
ffffffffa0079444
>] logfs_write_rec+0x64/0xd0 [logfs]
[<
ffffffffa00795b6
>] __logfs_write_buf+0x106/0x110 [logfs]
[<
ffffffffa007a13e
>] logfs_write_buf+0x4e/0x80 [logfs]
[<
ffffffffa0073e33
>] __logfs_writepage+0x23/0x80 [logfs]
[<
ffffffffa007410c
>] logfs_writepage+0xdc/0x110 [logfs]
[<
ffffffff810f5ba7
>] __writepage+0x17/0x40
[<
ffffffff810f6208
>] write_cache_pages+0x208/0x4f0
[<
ffffffff810f5b90
>] ? set_page_dirty+0x70/0x70
[<
ffffffff810f653a
>] generic_writepages+0x4a/0x70
[<
ffffffff810f75d1
>] do_writepages+0x21/0x40
[<
ffffffff8116b9d1
>] writeback_single_inode+0x101/0x250
[<
ffffffff8116bdbd
>] writeback_sb_inodes+0xed/0x1c0
[<
ffffffff8116c5fb
>] writeback_inodes_wb+0x7b/0x1e0
[<
ffffffff8116cc23
>] wb_writeback+0x4c3/0x530
[<
ffffffff814d984d
>] ? sub_preempt_count+0x9d/0xd0
[<
ffffffff8116cd6b
>] wb_do_writeback+0xdb/0x290
[<
ffffffff814d984d
>] ? sub_preempt_count+0x9d/0xd0
[<
ffffffff814d6208
>] ? _raw_spin_unlock_irqrestore+0x18/0x40
[<
ffffffff8105aa5a
>] ? del_timer+0x8a/0x120
[<
ffffffff8116cfac
>] bdi_writeback_thread+0x8c/0x2e0
[<
ffffffff8116cf20
>] ? wb_do_writeback+0x290/0x290
[<
ffffffff8106d2e6
>] kthread+0x96/0xa0
[<
ffffffff814de514
>] kernel_thread_helper+0x4/0x10
[<
ffffffff8106d250
>] ? kthread_worker_fn+0x190/0x190
[<
ffffffff814de510
>] ? gs_change+0xb/0xb
RIP [<
ffffffffa007deed
>] bdev_writeseg+0x25d/0x270 [logfs]
---[ end trace
0211ad60a57657c4
]---
Reviewed-by: Joern Engel <joern@logfs.org>
Signed-off-by: Prasad Joshi <prasadjoshi.linux@gmail.com>
No differences found