summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorYan Zheng <zheng.yan@oracle.com>2008-11-11 14:33:29 (GMT)
committerChris Mason <chris.mason@oracle.com>2008-11-11 14:33:29 (GMT)
commit8247b41ac980d125de8aeba6f33f381056ac0ecb (patch)
tree40b8ddab6be8ec6766007b22db9a6b898ff1a960 /fs
parent8a1413a296d38b54ded651e76ef16c033d38fd5d (diff)
downloadlinux-8247b41ac980d125de8aeba6f33f381056ac0ecb.tar.xz
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>
Diffstat (limited to 'fs')
-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 4119f9a..934bc09 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -436,7 +436,7 @@ next_slot:
goto out;
}
if (recow) {
- search_start = key.offset;
+ search_start = max(key.offset, start);
continue;
}
if (btrfs_key_type(&key) == BTRFS_EXTENT_DATA_KEY) {