From 8fe65ba2db84490ab461e34aded73b6f1b8b2522 Mon Sep 17 00:00:00 2001 From: Yan Zheng Date: Fri, 7 Aug 2009 13:51:33 -0400 Subject: [PATCH] --- yaml --- r: 156512 b: refs/heads/master c: ceab36edd3d3ad3ffd01d41d6d1e05ac1ff8357e h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/btrfs/relocation.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 2348f8c2c674..b1a4bb0d520f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 60f2e8f8a07331097a57ec4abcdc680405579377 +refs/heads/master: ceab36edd3d3ad3ffd01d41d6d1e05ac1ff8357e diff --git a/trunk/fs/btrfs/relocation.c b/trunk/fs/btrfs/relocation.c index e71264d1c2c9..c04f7f212602 100644 --- a/trunk/fs/btrfs/relocation.c +++ b/trunk/fs/btrfs/relocation.c @@ -2553,8 +2553,13 @@ int relocate_inode_pages(struct inode *inode, u64 start, u64 len) last_index = (start + len - 1) >> PAGE_CACHE_SHIFT; /* make sure the dirty trick played by the caller work */ - ret = invalidate_inode_pages2_range(inode->i_mapping, - first_index, last_index); + while (1) { + ret = invalidate_inode_pages2_range(inode->i_mapping, + first_index, last_index); + if (ret != -EBUSY) + break; + schedule_timeout(HZ/10); + } if (ret) goto out_unlock;