]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
ext4: always set then trimmed blocks count into len
authorLukas Czerner <lczerner@redhat.com>
Thu, 22 Mar 2012 01:26:22 +0000 (21:26 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Thu, 22 Mar 2012 01:26:22 +0000 (21:26 -0400)
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>
fs/ext4/mballoc.c

index c8b6a8808166e6fc14380f11358038ca33afc52d..99ab428bcfa089822e74b433aee7b1bf4076e34d 100644 (file)
@@ -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;
 }