• Lukas Czerner's avatar
    ext3: Add FITRIM handling · 9c527492
    Lukas Czerner authored
    The ioctl takes fstrim_range structure (defined in include/linux/fs.h) as an
    argument specifying a range of filesystem to trim and the minimum size of an
    continguous extent to trim. After the FITRIM is done, the number of bytes
    passed from the filesystem down the block stack to the device for potential
    discard is stored in fstrim_range.len.  This number is a maximum discard amount
    from the storage device's perspective, because FITRIM called repeatedly will
    keep sending the same sectors for discard.  fstrim_range.len will report the
    same potential discard bytes each time, but only sectors which had been written
    to between the discards would actually be discarded by the storage device.
    Further, the kernel block layer reserves the right to adjust the discard ranges
    to fit raid stripe geometry, non-trim capable devices in a LVM setup, etc.
    These reductions would not be reflected in fstrim_range.len.
    
    Thus fstrim_range.len can give the user better insight on how much storage
    space has potentially been released for wear-leveling, but it needs to be one
    of only one criteria the userspace tools take into account when trying to
    optimize calls to FITRIM.
    
    Thanks to Greg Freemyer <greg.freemyer@gmail.com> for better commit message.
    Signed-off-by: default avatarLukas Czerner <lczerner@redhat.com>
    Signed-off-by: default avatarJan Kara <jack@suse.cz>
    9c527492
ioctl.c 8.16 KB