summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorYan <yanzheng@21cn.com>2007-11-06 16:26:28 +0100
committerChris Mason <chris.mason@oracle.com>2008-09-25 17:03:57 +0200
commita273208edd55463b3bcd8b77a6fe8ba54afc6940 (patch)
treefa89bce25b3067bc2e11612c4f28ef8fec9bd27a /fs
parentBtrfs: Fix u32 overflow in dirty_and_release_pages. (diff)
downloadlinux-a273208edd55463b3bcd8b77a6fe8ba54afc6940.tar.xz
linux-a273208edd55463b3bcd8b77a6fe8ba54afc6940.zip
Fix EXTENT_MAP_INLINE off by one in btrfs_drop_extents
Don't set hint_byte to EXTENT_MAP_INLINE when 'end == extent_end' or 'start == key.offset' . The inline extent will be truncated in these cases. Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/btrfs/file.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index bb98f52f4ea4..5ceaed25dce1 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -475,8 +475,7 @@ next_slot:
search_start = (extent_end + mask) & ~mask;
} else
search_start = extent_end;
-
- if (end <= extent_end && start >= key.offset && found_inline) {
+ if (end < extent_end && start > key.offset && found_inline) {
*hint_byte = EXTENT_MAP_INLINE;
}
if (end < extent_end && end >= key.offset) {