Btrfs: Fix infinite loop in btrfs_extent_post_op
authorYan Zheng <zheng.yan@oracle.com>
Wed, 21 Jan 2009 15:49:16 +0000 (10:49 -0500)
committerChris Mason <chris.mason@oracle.com>
Wed, 21 Jan 2009 15:49:16 +0000 (10:49 -0500)
commit5a7be515b1f4569aac601170fc681741434cca92
tree3c22153ede08ed26b4bf9349347d17b52c6d8d09
parent3dfdb9348ada18c74c39b9ae7b115e0594792281
Btrfs: Fix infinite loop in btrfs_extent_post_op

btrfs_extent_post_op calls finish_current_insert and del_pending_extents. They
both may enter infinite loops.

finish_current_insert enters infinite loop if it only finds some backrefs to
update.  The fix is to check for pending backref updates before restarting the
loop.

The infinite loop in del_pending_extents is due to a the skipped variable
not being properly reset before looping around.

Signed-off-by: Yan Zheng <zheng.yan@oracle.com>
fs/btrfs/extent-tree.c