diff options
author | Lukas Czerner <lczerner@redhat.com> | 2012-03-21 21:26:22 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2012-03-21 21:26:22 -0400 |
commit | a7967f055a9438941268d725b268141c57e32a05 (patch) | |
tree | e79e8452bdb81baa850f71b5f62b23d2c326b98b /fs/ext4 | |
parent | 21e7fd22a5a0ca83befe12c58cced21975dab213 (diff) | |
download | linux-a7967f055a9438941268d725b268141c57e32a05.tar.gz linux-a7967f055a9438941268d725b268141c57e32a05.tar.bz2 linux-a7967f055a9438941268d725b268141c57e32a05.zip |
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.c | 2 |
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) */ first_cluster = 0; } - range->len = trimmed * sb->s_blocksize; if (!ret) atomic_set(&EXT4_SB(sb)->s_last_trim_minblks, minlen); out: + range->len = trimmed * sb->s_blocksize; return ret; } |