Btrfs: fix balancing oops when invalidate_inode_pages2 returns EBUSY
authorYan Zheng <zheng.yan@oracle.com>
Fri, 7 Aug 2009 17:51:33 +0000 (13:51 -0400)
committerChris Mason <chris.mason@oracle.com>
Fri, 7 Aug 2009 17:51:33 +0000 (13:51 -0400)
commitceab36edd3d3ad3ffd01d41d6d1e05ac1ff8357e
treea6d899030878d52ae6d7932e459deece3524c787
parent60f2e8f8a07331097a57ec4abcdc680405579377
Btrfs: fix balancing oops when invalidate_inode_pages2 returns EBUSY

invalidate_inode_pages2_range may return -EBUSY occasionally
which results Oops. This patch fixes the issue by moving
invalidate_inode_pages2_range into a loop and keeping calling
it until the return value is not -EBUSY.

The EBUSY return is temporary, and can happen when the btrfs release page
function is unable to release a page because the EXTENT_LOCK
bit is set.

Signed-off-by: Yan Zheng <zheng.yan@oracle.com>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/relocation.c