Commit a7967f05 authored by Lukas Czerner's avatar Lukas Czerner Committed by Theodore Ts'o

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: default avatarLukas Czerner <lczerner@redhat.com>
Reviewed-by: default avatarJan Kara <jack@suse.cz>
Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
parent 21e7fd22
...@@ -5035,11 +5035,11 @@ int ext4_trim_fs(struct super_block *sb, struct fstrim_range *range) ...@@ -5035,11 +5035,11 @@ int ext4_trim_fs(struct super_block *sb, struct fstrim_range *range)
*/ */
first_cluster = 0; first_cluster = 0;
} }
range->len = trimmed * sb->s_blocksize;
if (!ret) if (!ret)
atomic_set(&EXT4_SB(sb)->s_last_trim_minblks, minlen); atomic_set(&EXT4_SB(sb)->s_last_trim_minblks, minlen);
out: out:
range->len = trimmed * sb->s_blocksize;
return ret; return ret;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment