aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYan Zheng <zheng.yan@oracle.com>2008-11-11 09:33:29 -0500
committerChris Mason <chris.mason@oracle.com>2008-11-11 09:33:29 -0500
commit8247b41ac980d125de8aeba6f33f381056ac0ecb (patch)
tree40b8ddab6be8ec6766007b22db9a6b898ff1a960
parent8a1413a296d38b54ded651e76ef16c033d38fd5d (diff)
Btrfs: Fix starting search offset inside btrfs_drop_extents
btrfs_drop_extents will drop paths and search again when it needs to force COW of higher nodes. It was using the key it found during the last search as the offset for the next search. But, this wasn't always correct. The key could be from before our desired range, and because we're dropping the path, it is possible for file's items to change while we do the search again. The fix here is to make sure we don't search for something smaller than the offset btrfs_drop_extents was called with. Signed-off-by: Chris Mason <chris.mason@oracle.com>
-rw-r--r--fs/btrfs/file.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 4119f9a95320..934bc094bf17 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -436,7 +436,7 @@ next_slot:
436 goto out; 436 goto out;
437 } 437 }
438 if (recow) { 438 if (recow) {
439 search_start = key.offset; 439 search_start = max(key.offset, start);
440 continue; 440 continue;
441 } 441 }
442 if (btrfs_key_type(&key) == BTRFS_EXTENT_DATA_KEY) { 442 if (btrfs_key_type(&key) == BTRFS_EXTENT_DATA_KEY) {