There is a bug report about discard mount option not trimming some range properly, and causing unexpected space usage for thin device.
It turns out to be that, if there are pinned extents across block group boundary, we will only trim to the end of current block group, skipping the remaining. This patchset will fix it by ensuring btrfs_discard_extent() will iterate the full range before exiting. Meanwhile I'm still looking into how to craft such test case for btrfs, so the test case may be late for several days. Qu Wenruo (2): btrfs: volumes: Return the mapped length for discard btrfs: extent-tree: Ensure we trim ranges across block group boundary fs/btrfs/extent-tree.c | 40 ++++++++++++++++++++++++++++++---------- fs/btrfs/volumes.c | 8 +++++--- 2 files changed, 35 insertions(+), 13 deletions(-) -- 2.23.0