Re: [PATCH, RFC] xfs: batched discard support

From: Mark Lord
Date: Sat Aug 15 2009 - 21:35:29 EST


Christoph Hellwig wrote:
Given that everyone is so big in the discard discussion I'd like to
present what I had started to prepare for XFS. I didn't plan to send it
out until I get my hands onto a TRIM capable device (or at least get
time to add support to qemu), and so far it's only been tested in
dry-run mode.

The basic idea is to add an ioctl which walks the free space btrees in
each allocation group and simply discard everythin that is free. Given
that XFS doesn't gragment freespace very much that's a very efficient
way to do it. In addition we also already support setting a threshold
under which we don't bother to discard an extent, it's currently
hardcoded in the helper tool. In the future we could also add things
like a sequence number in the AG headers if anything has changed at all,
but let's leave those optimizations until we need them.

XFS locks the allocation btree using the btree buffers, so we do not
block allocations from any extent which we're not currenly discarding.

Now the caveat for that is that we really do want to do the discard
synchronously, that is wait for the request to finish. That's what
I've implemented in this patch, but it's the part I haven't been
able to test so far. (and yes, this should be separate patch, but it's
really just an RFC for now)

Mark, any chance to try it? Just create an XFS filesystem, age it a
bit and then call the attached little trim.c program on the mountmoint
(or any file inside the filesystem for that matter)
..

Looking at it now. Thanks, Christoph!
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/