fstrim should trim free space, but it only trims unallocated. This is with kernel 4.14.0 and the entire 4.13 series. I'm pretty sure it behaved this way with 4.12 also.
[root@f27h ~]# fstrim -v / /: 39 GiB (41841328128 bytes) trimmed [root@f27h ~]# btrfs fi us / Overall: Device size: 70.00GiB Device allocated: 31.03GiB Device unallocated: 38.97GiB Device missing: 0.00B Used: 22.02GiB Free (estimated): 47.72GiB (min: 47.72GiB) Data ratio: 1.00 Metadata ratio: 1.00 Global reserve: 65.97MiB (used: 0.00B) Data,single: Size:30.00GiB, Used:21.25GiB /dev/nvme0n1p8 30.00GiB Metadata,single: Size:1.00GiB, Used:791.58MiB /dev/nvme0n1p8 1.00GiB System,single: Size:32.00MiB, Used:16.00KiB /dev/nvme0n1p8 32.00MiB Unallocated: /dev/nvme0n1p8 38.97GiB -- Chris Murphy -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html