From owner-cvs-src-old@FreeBSD.ORG Mon Dec 28 20:08:52 2009 Return-Path: Delivered-To: cvs-src-old@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EF0A91065694 for ; Mon, 28 Dec 2009 20:08:52 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id DD2688FC0C for ; Mon, 28 Dec 2009 20:08:52 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id nBSK8q0a036239 for ; Mon, 28 Dec 2009 20:08:52 GMT (envelope-from mav@repoman.freebsd.org) Received: (from svn2cvs@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id nBSK8qEU036238 for cvs-src-old@freebsd.org; Mon, 28 Dec 2009 20:08:52 GMT (envelope-from mav@repoman.freebsd.org) Message-Id: <200912282008.nBSK8qEU036238@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: svn2cvs set sender to mav@repoman.freebsd.org using -f From: Alexander Motin Date: Mon, 28 Dec 2009 20:08:01 +0000 (UTC) To: cvs-src-old@freebsd.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/cam/ata ata_all.c ata_da.c src/sys/geom geom_dev.c src/sys/sys ata.h X-BeenThere: cvs-src-old@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: **OBSOLETE** CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 Dec 2009 20:08:53 -0000 mav 2009-12-28 20:08:01 UTC FreeBSD src repository Modified files: sys/cam/ata ata_all.c ata_da.c sys/geom geom_dev.c sys/sys ata.h Log: SVN rev 201139 on 2009-12-28 20:08:01Z by mav Add BIO_DELETE support to ada(4): - For SSDs use TRIM feature of DATA SET MANAGEMENT command, as defined by ACS-2 specification working draft. - For CompactFlash use CFA ERASE command, same as ad(4) does. With this patch, `newfs -E /dev/ada1` was able to restore write speed of my heavily weared OCZ Vertex SSD (firmware 1.4) up to the initial level for the most part of it's capacity. Previous 1.3 firmware, even reportiong TRIM capabilty bit set, was not working, reporting ABORT error for every DSM command. I have no idea whether it is normal, but for some reason it takes 200ms to handle any TRIM command on this drive, that was making delete extremely slow. But TRIM command is able to accept long list of LBAs and the length of that list seems doesn't affect it's execution time. Implemented request clusting algorithm allowed me to rise delete rate up to reasonable numbers, when many parallel DELETE requests running. Revision Changes Path 1.12 +7 -1 src/sys/cam/ata/ata_all.c 1.14 +241 -111 src/sys/cam/ata/ata_da.c 1.105 +2 -2 src/sys/geom/geom_dev.c 1.48 +11 -3 src/sys/sys/ata.h