linux/fs/nilfs2
Ryusuke Konishi a97778457f 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
2009-08-01 22:48:32 +09:00
..
Kconfig fs/Kconfig: move nilfs2 out 2009-07-14 12:34:17 +09:00
Makefile nilfs2: update makefile and Kconfig 2009-04-07 08:31:16 -07:00
alloc.c nilfs2: persistent object allocator 2009-04-07 08:31:13 -07:00
alloc.h nilfs2: persistent object allocator 2009-04-07 08:31:13 -07:00
bmap.c nilfs2: fix lockdep warning between regular file and inode file 2009-07-05 10:44:20 +09:00
bmap.h nilfs2: support contiguous lookup of blocks 2009-06-10 23:41:12 +09:00
bmap_union.h
btnode.c nilfs2: add sync_page method to page caches of meta data 2009-06-10 23:41:12 +09:00
btnode.h nilfs2: use device's backing_dev_info for btree node caches 2009-06-10 23:41:12 +09:00
btree.c nilfs2: support contiguous lookup of blocks 2009-06-10 23:41:12 +09:00
btree.h nilfs2: remove nilfs_btree_operations from btree mapping 2009-06-10 23:41:11 +09:00
cpfile.c nilfs2: fix disorder in cp count on error during deleting checkpoints 2009-07-05 10:44:20 +09:00
cpfile.h nilfs2: allow future expansion of metadata read out via get info ioctl 2009-06-10 23:41:11 +09:00
dat.c nilfs2: fix incorrect KERN_CRIT messages in case of write failures 2009-07-05 10:44:20 +09:00
dat.h nilfs2: allow future expansion of metadata read out via get info ioctl 2009-06-10 23:41:11 +09:00
dir.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
direct.c nilfs2: support contiguous lookup of blocks 2009-06-10 23:41:12 +09:00
direct.h nilfs2: remove nilfs_direct_operations from direct mapping 2009-06-10 23:41:11 +09:00
file.c nilfs2: use unlocked_ioctl 2009-04-07 08:31:19 -07:00
gcdat.c nilfs2: another dat for garbage collection 2009-04-07 08:31:16 -07:00
gcinode.c nilfs2: add sync_page method to page caches of meta data 2009-06-10 23:41:12 +09:00
ifile.c nilfs2: inode map file 2009-04-07 08:31:14 -07:00
ifile.h nilfs2: inode map file 2009-04-07 08:31:14 -07:00
inode.c switch nilfs2 to inode->i_acl 2009-06-24 08:17:05 -04:00
ioctl.c nilfs2: allow future expansion of metadata read out via get info ioctl 2009-06-10 23:41:11 +09:00
mdt.c nilfs2: add sync_page method to page caches of meta data 2009-06-10 23:41:12 +09:00
mdt.h nilfs2: meta data file 2009-04-07 08:31:13 -07:00
namei.c nilfs2: avoid double error caused by nilfs_transaction_end 2009-04-07 08:31:17 -07:00
nilfs.h switch nilfs2 to inode->i_acl 2009-06-24 08:17:05 -04:00
page.c nilfs2: ensure to clear dirty state when deleting metadata file block 2009-05-10 17:04:42 +09:00
page.h nilfs2: buffer and page operations 2009-04-07 08:31:13 -07:00
recovery.c nilfs2: remove header file for segment list operations 2009-06-10 23:41:09 +09:00
sb.h nilfs2: simplify remaining sget() use 2009-06-11 21:36:18 -04:00
segbuf.c nilfs2: set bio unplug flag for the last bio in segment 2009-06-10 23:41:11 +09:00
segbuf.h nilfs2: simplify handling of active state of segments 2009-04-07 08:31:20 -07:00
segment.c nilfs2: fix oops due to inconsistent state in page with discrete b-tree nodes 2009-08-01 22:48:32 +09:00
segment.h nilfs2: remove header file for segment list operations 2009-06-10 23:41:09 +09:00
sufile.c nilfs2: allow future expansion of metadata read out via get info ioctl 2009-06-10 23:41:11 +09:00
sufile.h nilfs2: allow future expansion of metadata read out via get info ioctl 2009-06-10 23:41:11 +09:00
super.c switch nilfs2 to inode->i_acl 2009-06-24 08:17:05 -04:00
the_nilfs.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2 2009-06-15 09:13:49 -07:00
the_nilfs.h nilfs2: get rid of bd_mount_sem use from nilfs 2009-06-11 21:36:18 -04:00