aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext4
diff options
context:
space:
mode:
authorLukas Czerner <lczerner@redhat.com>2012-03-21 21:26:22 -0400
committerTheodore Ts'o <tytso@mit.edu>2012-03-21 21:26:22 -0400
commita7967f055a9438941268d725b268141c57e32a05 (patch)
treee79e8452bdb81baa850f71b5f62b23d2c326b98b /fs/ext4
parent21e7fd22a5a0ca83befe12c58cced21975dab213 (diff)
ext4: always set then trimmed blocks count into len
Currently if the range to trim is too small, for example on 1K fs the request to trim the first block, then the 'range->len' is not set reporting wrong number of discarded block to the caller. Fix this by always setting the 'range->len' before we return. Note that when there is a failure (-EINVAL) caller can not depend on 'range->len' being set properly. Signed-off-by: Lukas Czerner <lczerner@redhat.com> Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/ext4')
-rw-r--r--fs/ext4/mballoc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index c8b6a8808166..99ab428bcfa0 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -5035,11 +5035,11 @@ int ext4_trim_fs(struct super_block *sb, struct fstrim_range *range)
5035 */ 5035 */
5036 first_cluster = 0; 5036 first_cluster = 0;
5037 } 5037 }
5038 range->len = trimmed * sb->s_blocksize;
5039 5038
5040 if (!ret) 5039 if (!ret)
5041 atomic_set(&EXT4_SB(sb)->s_last_trim_minblks, minlen); 5040 atomic_set(&EXT4_SB(sb)->s_last_trim_minblks, minlen);
5042 5041
5043out: 5042out:
5043 range->len = trimmed * sb->s_blocksize;
5044 return ret; 5044 return ret;
5045} 5045}