]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Btrfs: Fix starting search offset inside btrfs_drop_extents
authorYan Zheng <zheng.yan@oracle.com>
Tue, 11 Nov 2008 14:33:29 +0000 (09:33 -0500)
committerChris Mason <chris.mason@oracle.com>
Tue, 11 Nov 2008 14:33:29 +0000 (09:33 -0500)
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>
fs/btrfs/file.c

index 4119f9a953204bff0f68d206ccc70f2fc8d3d7cc..934bc094bf17f6297ba827c519d5739457b3608f 100644 (file)
@@ -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) {