From 0cc3b8f2c3120b475df97f61fce9633949aead3e Mon Sep 17 00:00:00 2001 From: Liu Bo Date: Thu, 9 Feb 2012 18:17:41 +0800 Subject: [PATCH] --- yaml --- r: 287885 b: refs/heads/master c: 2cac13e41bf5b99ffc426bd28dfd2248df1dfa67 h: refs/heads/master i: 287883: 530d758e511cb6d0dab641ab816e1cec2fcc1966 v: v3 --- [refs] | 2 +- trunk/fs/btrfs/extent-tree.c | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 313f44a47165..914e153121a0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6af021d8fc3bcce790e7fbb391e39c5920fa3f71 +refs/heads/master: 2cac13e41bf5b99ffc426bd28dfd2248df1dfa67 diff --git a/trunk/fs/btrfs/extent-tree.c b/trunk/fs/btrfs/extent-tree.c index 283af7a676a3..60bfe2d68547 100644 --- a/trunk/fs/btrfs/extent-tree.c +++ b/trunk/fs/btrfs/extent-tree.c @@ -7886,9 +7886,16 @@ int btrfs_trim_fs(struct btrfs_root *root, struct fstrim_range *range) u64 start; u64 end; u64 trimmed = 0; + u64 total_bytes = btrfs_super_total_bytes(fs_info->super_copy); int ret = 0; - cache = btrfs_lookup_block_group(fs_info, range->start); + /* + * try to trim all FS space, our block group may start from non-zero. + */ + if (range->len == total_bytes) + cache = btrfs_lookup_first_block_group(fs_info, range->start); + else + cache = btrfs_lookup_block_group(fs_info, range->start); while (cache) { if (cache->key.objectid >= (range->start + range->len)) {