]> git.baikalelectronics.ru Git - kernel.git/commit
nilfs2: fix oops due to inconsistent state in page with discrete b-tree nodes
authorRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Tue, 28 Jul 2009 08:55:29 +0000 (17:55 +0900)
committerRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Sat, 1 Aug 2009 13:48:32 +0000 (22:48 +0900)
commit238f1b1cefdde8db0a8a494796a8c1259cc78f65
treed2ee3d9491ab2b17551f099d9a6119407700dbd2
parent41507b2becbcf9f1ff030de81da41febffa840fa
nilfs2: fix oops due to inconsistent state in page with discrete b-tree nodes

Andrea Gelmini gave me a report that a kernel oops hit on a nilfs
filesystem with a 1KB block size when doing rsync.

This turned out to be caused by an inconsistency of dirty state
between a page and its buffers storing b-tree node blocks.

If the page had multiple buffers split over multiple logs, and if the
logs were written at a time, a dirty flag remained in the page even
every dirty flag in the buffers was cleared.

This will fix the failure by dropping the dirty flag properly for
pages with the discrete multiple b-tree nodes.

Reported-by: Andrea Gelmini <andrea.gelmini@gmail.com>
Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Tested-by: Andrea Gelmini <andrea.gelmini@gmail.com>
Cc: stable@kernel.org
fs/nilfs2/segment.c