diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-08-07 19:03:09 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-08-07 19:03:09 -0700 |
commit | d6a0967c90dced0a8baf502e6f3d5862fd5a5805 (patch) | |
tree | e0242d5077730dabc4102b7abad9ee0c41e33bc0 /fs/btrfs/relocation.c | |
parent | fb385003c4ac9634cf2448f6ded81e5fd1190c1f (diff) | |
parent | ceab36edd3d3ad3ffd01d41d6d1e05ac1ff8357e (diff) | |
download | linux-d6a0967c90dced0a8baf502e6f3d5862fd5a5805.tar.gz linux-d6a0967c90dced0a8baf502e6f3d5862fd5a5805.tar.bz2 linux-d6a0967c90dced0a8baf502e6f3d5862fd5a5805.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable
* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:
Btrfs: fix balancing oops when invalidate_inode_pages2 returns EBUSY
Btrfs: correct error-handling zlib error handling
Btrfs: remove superfluous NULL pointer check in btrfs_rename()
Btrfs: make sure the async caching thread advances the key
Btrfs: fix btrfs_remove_from_free_space corner case
Diffstat (limited to 'fs/btrfs/relocation.c')
-rw-r--r-- | fs/btrfs/relocation.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c index e71264d1c2c9..c04f7f212602 100644 --- a/fs/btrfs/relocation.c +++ b/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; |