Date: Fri, 30 May 2014 21:00:09 -0600 From: Ian Lepore <ian@FreeBSD.org> To: ticso@cicely.de Cc: freebsd-arm@FreeBSD.org, Bernd Walter <ticso@cicely7.cicely.de> Subject: Re: TRIM on SD cards Message-ID: <1401505209.20883.34.camel@revolution.hippie.lan> In-Reply-To: <20140531004306.GI26883@cicely7.cicely.de> References: <20140531004306.GI26883@cicely7.cicely.de>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 2014-05-31 at 02:43 +0200, Bernd Walter wrote: > It seems SD cards support a delete command, which FreeBSD supports > with the mmcsd driver. > newfs and tunefs support TRIM in that new filesystems are trim'ed > and the filesystems automatically trim free'ed blocks. > So far so good. > On the practical side with SD based ARM you don't write filesystems > directly via mmcsd. > We either create an image, which id dd'ed onto SD or in some cases > we use an USB SD drive. > With dd the unused blocks are written as well, which effectively > hurts by writing data. > Is there some kind of dd, which actually don't write zero blocks, > or even better does a trim call for them? I don't think dd can safely do that. If it finds a block of zeroes on the input side, how does it know it's okay to do a DELETE for those (which sets the block to all-bits-on on most flash media). Maybe it's important for that data to really be zero; dd doesn't know. That's one of the reasons why I recently mentioned a desire for a /dev/ones to go with /dev/zero as a way of pre-init'ing an image to be more friendly to flash media. The idea was not well-received by other freebsd folks. Maybe if the image was sparse, dd could tell the difference between an missing segment and a segment populated with zeroes and do a DELETE for missing data. I never do the image creation thing, I mostly tend to use nfsroot and at $work we use tar to copy files to sdcards with a usb burner rather than preformatting images into files. -- Ian > Is there a tool to trim a filesystem after creation? > Ok - even then there is the option to directly newfs on the SD card. > But in any case I need to be able to issue trim requests to the card. > It seems there is support in our da driver, but will it be transported > to the USB reader and even if - how can I find out if my reader actually > supports trim commands? > A newfs -t -E with my older transcend multireader and a new class10 > Intenso micro-SD issues no error. > But is it save to assume the card actually got trim'ed? > > Trim is enabled on the filesystem, but not shown in mount list: > [189]gw1# tunefs -t enable /dev/da0 > tunefs: issue TRIM to the disk remains unchanged as enabled > [190]gw1# mount /dev/da0 /mnt > [191]gw1# mount | grep mnt > /dev/da0 on /mnt (ufs, local, soft-updates) > FreeBSD gw1.cicely.de 10.0-STABLE FreeBSD 10.0-STABLE #0: Thu Apr 17 11:47:45 CEST 2014 ticso@gw1.cicely.de:/usr/obj/home/builder/gw1/10/sys/GW1 i386 >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1401505209.20883.34.camel>