ext4: add punching hole support for non-extent-mapped files
authorZheng Liu <wenqing.lz@taobao.com>
Mon, 28 Jan 2013 14:21:37 +0000 (09:21 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 28 Jan 2013 14:21:37 +0000 (09:21 -0500)
commit8bad6fc813a3a5300f51369c39d315679fd88c72
treec455b1f18cc19627a9ab1055d57b72042aeae0a0
parent03dafb5f59bd31b3f590329e95434203f0ca6661
ext4: add punching hole support for non-extent-mapped files

This patch add supports for indirect file support punching hole.  It
is almost the same as ext4_ext_punch_hole.  First, we invalidate all
pages between this hole, and then we try to deallocate all blocks of
this hole.

A recursive function is used to handle deallocation of blocks.  In
this function, it iterates over the entries in inode's i_blocks or
indirect blocks, and try to free the block for each one of them.

After applying this patch, xfstest #255 will not pass w/o extent because
indirect-based file doesn't support unwritten extents.

Signed-off-by: Zheng Liu <wenqing.lz@taobao.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
fs/ext4/ext4.h
fs/ext4/extents.c
fs/ext4/indirect.c
fs/ext4/inode.c