[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4A8810C4.3050800@rtr.ca>
Date: Sun, 16 Aug 2009 09:59:32 -0400
From: Mark Lord <liml@....ca>
To: Christoph Hellwig <hch@...radead.org>
Cc: xfs@....sgi.com, linux-fsdevel@...r.kernel.org,
linux-scsi@...r.kernel.org, linux-kernel@...r.kernel.org,
jens.axboe@...cle.com,
IDE/ATA development list <linux-ide@...r.kernel.org>
Subject: Re: [PATCH, RFC] xfs: batched discard support
Mark Lord wrote:
> Christoph Hellwig wrote:
>> On Sat, Aug 15, 2009 at 10:19:21PM -0400, Mark Lord wrote:
>>> Mark Lord wrote:
>>>> Christoph Hellwig wrote:
>>> ..
>>>>> 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!
>>> ..
>>>
>>> Fails to work on 64-bit kernel w/ 32-bit userspace (no compat ioctl).
>>> Rebuilding with 32-bit kernel now..
>>
>> The actual ioctl is compatible, just add the
>>
>> case XFS_IOC_TRIM:
>> return xfs_ioc_trim(mp, arg);
>>
>> to xfs_file_compat_ioctl(). I'll add this to the next spin of the patch.
> ..
>
> Okay, this gives me ENOSYS now --> discard/trim support is missing from
> the lower layers.
>
> What other patches do I need to make this work?
>
> The latest from Matthew's discard tree (May 2009) don't appear to be sufficient,
> even after updating them for 2.6.31-rc6.
..
Okay, I got Matthews patches updated onto 2.6.31, and fixed the incompatibilities
between those and the XFS TRIM patch (from Christoph), plus a sector_t printk issue.
My apologies for attachments, but I am attaching the updated Christoph patch,
as well as my hacked-up forward-port of Matthew's patches.
Not pretty, but they work. :)
Now.. running Christoph's "xfs trim" on a 4.6GB mostly already-trimmed
XFS partition gave this for the first time around:
[ 25.961891] Filesystem "sdb3": discarding sectors [0xc558-0x102328]
[ 27.814553] Filesystem "sdb3": discarding sectors [0x10ea78-0x10e688]
[ 29.771218] Filesystem "sdb3": discarding sectors [0x21d120-0x10e860]
[ 31.726444] Filesystem "sdb3": discarding sectors [0x32b9a0-0x10e860]
[ 33.679023] Filesystem "sdb3": discarding sectors [0x43f220-0x109860]
[ 35.629948] Filesystem "sdb3": discarding sectors [0x548aa0-0x10e860]
[ 37.583142] Filesystem "sdb3": discarding sectors [0x657320-0x10e860]
[ 39.531822] Filesystem "sdb3": discarding sectors [0x765ba0-0x10e860]
Slow, but presumably thorough.
Subsequent runs were equally slow.
The problem is, it still issues TRIMs to the LLD one extent at a time.
Compare this with doing it all in a single TRIM command
with the wiper.sh script (filesystem unmounted):
[~] time wiper.sh /dev/sdb3 --commit
wiper.sh: Linux SATA SSD TRIM utility, version 1.9b, by Mark Lord.
Preparing for offline TRIM of free space on /dev/sdb3 (xfs non-mounted).
This operation could destroy your data. Are you sure (y/N)? y
Syncing disks..
Beginning TRIM operations..
Trimming 168 free extents encompassing 8793136 sectors (4294 MB)
Done.
real 0m1.249s
user 0m0.110s
sys 0m0.063s
That includes the time for me to type 'y' and hit enter. :)
Cheers
View attachment "51_add_trim_support.patch" of type "text/x-diff" (11019 bytes)
View attachment "52_christoph_xfs_trim.patch" of type "text/x-diff" (6761 bytes)
Powered by blists - more mailing lists