That is my intent already, thanks. Just needs time, perhaps this winter.
I think a reasonable approach would be to modify the existing interfaces
so that the LLD can report a "max discard ranges per command" back up
the stack.
This way, libata could report a max of say, 64 ranges per "discard" (trim),
and DM/RAID could simply (for now) report a max of one range per discard.
Way up at the FITRIM level, code could interrogate the "discard" limit
for the device holding the fs, and construct the discard commands such that
they respect that limit. For a filesystem on DM/RAID, we would (for now)
end up with single-range discards, no change from the present.
For the much more common case of end-user SATA SSDs, though, we would
suddenly get multi-range trims working with probably very little effort.
That's the plan. Feel free to beat me to it -- you've been working on
the I/O stack nearly as long as I have (since 1992), and I expect you
know it far better by now, too! ;)
Cheers
--