Greg Freemyer wrote: ..
Mark, I don't believe your tool really addresses the mdraid situation, do you agree. ie. Since your bypassing most of the block stack, mdraid has no way of snooping on / adjusting the discards you are sending out.
.. Taking care of mounted RAID / LVM filesystems requires in-kernel TRIM support, possibly exported via an ioctl(). Taking care of unmounted RAID / LVM filesystems is possible in userland, but would also benefit from in-kernel support, where layouts are defined and known better than in userland. The XFS_TRIM was an idea that Cristoph floated, as a concept for examination. I think something along those lines would be best, but perhaps with an interface at the VFS layer. Something that permits a userland tool to work like this (below) might be nearly ideal: main() { int fd = open(filesystem_device); while (1) { int g, ngroups = ioctl(fd, GET_NUMBER_OF_BLOCK_GROUPS); for (g = 0; g < ngroups; ++g) { ioctl(fd, TRIM_ALL_FREE_EXTENTS_OF_GROUP, g); } sleep(3600); } } Not all filesystems have a "block group", or "allocation group" structure, but I suspect that it's an easy mapping in most cases. With this scheme, the kernel is absolved of the need to track/coallesce TRIM requests entirely. Something like that, perhaps. -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html