From 8655a8cbf390e3222260dfcaec9610539c70bd74 Mon Sep 17 00:00:00 2001 From: Andrew Mahone Date: Tue, 19 Jun 2012 21:08:32 -0400 Subject: [PATCH] --- yaml --- r: 318835 b: refs/heads/master c: a43a21113365e5a9b59efc411da715d910cca87c h: refs/heads/master i: 318833: f8d1648273d31b989200d88adb0fc06266adaf57 318831: 1e8ba6f22a58508b4ae240327d0e873cde994a24 v: v3 --- [refs] | 2 +- trunk/fs/btrfs/ioctl.c | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index b19a9e8fd3fe..7a57ecb5034a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e4b50e14c8f72bcbae53809815d5df70d5aec174 +refs/heads/master: a43a21113365e5a9b59efc411da715d910cca87c diff --git a/trunk/fs/btrfs/ioctl.c b/trunk/fs/btrfs/ioctl.c index 0e92e5763005..9ec23b93e019 100644 --- a/trunk/fs/btrfs/ioctl.c +++ b/trunk/fs/btrfs/ioctl.c @@ -832,7 +832,8 @@ static bool defrag_check_next_extent(struct inode *inode, struct extent_map *em) } static int should_defrag_range(struct inode *inode, u64 start, int thresh, - u64 *last_len, u64 *skip, u64 *defrag_end) + u64 *last_len, u64 *skip, u64 *defrag_end, + int compress) { struct extent_map *em; int ret = 1; @@ -863,7 +864,7 @@ static int should_defrag_range(struct inode *inode, u64 start, int thresh, * we hit a real extent, if it is big or the next extent is not a * real extent, don't bother defragging it */ - if ((*last_len == 0 || *last_len >= thresh) && + if (!compress && (*last_len == 0 || *last_len >= thresh) && (em->len >= thresh || !next_mergeable)) ret = 0; out: @@ -1145,7 +1146,8 @@ int btrfs_defrag_file(struct inode *inode, struct file *file, if (!should_defrag_range(inode, (u64)i << PAGE_CACHE_SHIFT, extent_thresh, &last_len, &skip, - &defrag_end)) { + &defrag_end, range->flags & + BTRFS_DEFRAG_RANGE_COMPRESS)) { unsigned long next; /* * the should_defrag function tells us how much to skip