nilfs2: move out mark_inode_dirty calls from bmap routines
authorRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Thu, 5 Nov 2009 16:00:48 +0000 (01:00 +0900)
committerRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Fri, 20 Nov 2009 01:05:47 +0000 (10:05 +0900)
commit9cb4e0d2b99e8b0e5e269d898ae6ab1967647c5a
tree09ac1daa4985b4717afc818f89cfe2439664b44a
parent09bf4aae0a3c471b721c43e7bdb6132200d907b2
nilfs2: move out mark_inode_dirty calls from bmap routines

Previously, nilfs_bmap_add_blocks() and nilfs_bmap_sub_blocks() called
mark_inode_dirty() after they changed the number of data blocks.

This moves these calls outside bmap outermost functions like
nilfs_bmap_insert() or nilfs_bmap_truncate().

This will mitigate overhead for truncate or delete operation since
they repeatedly remove set of blocks.  Nearly 10 percent improvement
was observed for removal of a large file:

 # dd if=/dev/zero of=/test/aaa bs=1M count=512
 # time rm /test/aaa

  real  2.968s -> 2.705s

Further optimization may be possible by eliminating these
mark_inode_dirty() uses though I avoid mixing separate changes here.

Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
fs/nilfs2/bmap.c
fs/nilfs2/inode.c