ocfs2: skip existing hole when removing the last extent_rec in punching-hole codes.
authorTristan Ye <tristan.ye@oracle.com>
Thu, 12 May 2011 12:47:07 +0000 (20:47 +0800)
committerJoel Becker <jlbec@evilplan.org>
Fri, 13 May 2011 18:26:20 +0000 (11:26 -0700)
commit9a790ba1ec02bbae0933e7ebd576c0bc329e9796
tree2c9de49e67ed2be4e6db04eae6b9d4062e9dd950
parent5d44670facd3205212f8fe89eb422e3b5f309612
ocfs2: skip existing hole when removing the last extent_rec in punching-hole codes.

In the case of removing a partial extent record which covers a hole, current
punching-hole logic will try to remove more than the length of whole extent
record, which leads to the failure of following assert(fs/ocfs2/alloc.c):

5507         BUG_ON(cpos < le32_to_cpu(rec->e_cpos) || trunc_range > rec_range);

This patch tries to skip existing hole at the last attempt of removing a partial
extent record, what's more, it also adds some necessary comments for better
understanding of punching-hole codes.

Signed-off-by: Tristan Ye <tristan.ye@oracle.com>
Signed-off-by: Joel Becker <jlbec@evilplan.org>
fs/ocfs2/file.c