[11/12] Btrfs: Fix btrfs_drop_extent_cache for skip pinned case
diff mbox

Message ID 4AFBD72C.6010407@oracle.com
State Accepted
Headers show

Commit Message

Yan, Zheng Nov. 12, 2009, 9:36 a.m. UTC
None

Patch
diff mbox

diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index a4a6d2c..a78fb9b 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -179,18 +179,14 @@  int btrfs_drop_extent_cache(struct inode *inode, u64 start, u64 end,
 		}
 		flags = em->flags;
 		if (skip_pinned && test_bit(EXTENT_FLAG_PINNED, &em->flags)) {
-			if (em->start <= start &&
-			    (!testend || em->start + em->len >= start + len)) {
+			if (testend && em->start + em->len >= start + len) {
 				free_extent_map(em);
 				write_unlock(&em_tree->lock);
 				break;
 			}
-			if (start < em->start) {
-				len = em->start - start;
-			} else {
+			start = em->start + em->len;
+			if (testend)
 				len = start + len - (em->start + em->len);
-				start = em->start + em->len;
-			}
 			free_extent_map(em);
 			write_unlock(&em_tree->lock);
 			continue;