From 71ea87711f628bb8aa26c3dffbda21068acfd6e0 Mon Sep 17 00:00:00 2001 From: Tao Ma Date: Wed, 23 Mar 2011 15:48:11 -0400 Subject: [PATCH] --- yaml --- r: 242395 b: refs/heads/master c: 0ba0851714beebb800992e5105a79dc3a4c504b0 h: refs/heads/master i: 242393: 1e68562e1cb9fb205b574c22df896cb1e9a8fbb2 242391: 6b77f7e55e4d5c6353ab785b5b913c031b093e34 v: v3 --- [refs] | 2 +- trunk/fs/ext4/mballoc.c | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 5fd6d0d31571..41894fff9184 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 65922cb5ced76ba7182e955d4aada96f93446b1a +refs/heads/master: 0ba0851714beebb800992e5105a79dc3a4c504b0 diff --git a/trunk/fs/ext4/mballoc.c b/trunk/fs/ext4/mballoc.c index cdc84953f1d4..a5837a837a8b 100644 --- a/trunk/fs/ext4/mballoc.c +++ b/trunk/fs/ext4/mballoc.c @@ -4870,10 +4870,15 @@ int ext4_trim_fs(struct super_block *sb, struct fstrim_range *range) break; } - if (len >= EXT4_BLOCKS_PER_GROUP(sb)) - len -= (EXT4_BLOCKS_PER_GROUP(sb) - first_block); - else + /* + * For all the groups except the last one, last block will + * always be EXT4_BLOCKS_PER_GROUP(sb), so we only need to + * change it for the last group in which case start + + * len < EXT4_BLOCKS_PER_GROUP(sb). + */ + if (first_block + len < EXT4_BLOCKS_PER_GROUP(sb)) last_block = first_block + len; + len -= last_block - first_block; if (e4b.bd_info->bb_free >= minlen) { cnt = ext4_trim_all_free(sb, &e4b, first_block,