Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 17 Jul 2014 23:05:20 +0000 (UTC)
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r268816 - in stable/10/sys/cam: ata scsi
Message-ID:  <201407172305.s6HN5KiV055259@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: imp
Date: Thu Jul 17 23:05:20 2014
New Revision: 268816
URL: http://svnweb.freebsd.org/changeset/base/268816

Log:
  MFC:
  
  >r267118 | imp | 2014-06-05 11:13:42 -0600 (Thu, 05 Jun 2014) | 9 lines
  >The code that combines adjacent ranges for BIO_DELETEs to optimize
  >trims to the device assumes the list is sorted. Don't apply the
  >optimization of not sorting the queue when we have SSDs to the
  >delete_queue, since it causes more discard traffic to the drive. While
  >one could argue that the higher levels should coalesce the trims,
  >that's not done today, so some optimization at this level is needed.
  >CR: https://phabric.freebsd.org/D142

Modified:
  stable/10/sys/cam/ata/ata_da.c
  stable/10/sys/cam/scsi/scsi_da.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/cam/ata/ata_da.c
==============================================================================
--- stable/10/sys/cam/ata/ata_da.c	Thu Jul 17 22:58:05 2014	(r268815)
+++ stable/10/sys/cam/ata/ata_da.c	Thu Jul 17 23:05:20 2014	(r268816)
@@ -732,10 +732,7 @@ adastrategy(struct bio *bp)
 			((softc->flags & ADA_FLAG_CAN_CFA) &&
 			 !(softc->flags & ADA_FLAG_CAN_48BIT)),
 			("BIO_DELETE but no supported TRIM method."));
-		if (ADA_SIO)
-		    bioq_disksort(&softc->trim_queue, bp);
-		else
-		    bioq_insert_tail(&softc->trim_queue, bp);
+		bioq_disksort(&softc->trim_queue, bp);
 	} else {
 		if (ADA_SIO)
 		    bioq_disksort(&softc->bio_queue, bp);

Modified: stable/10/sys/cam/scsi/scsi_da.c
==============================================================================
--- stable/10/sys/cam/scsi/scsi_da.c	Thu Jul 17 22:58:05 2014	(r268815)
+++ stable/10/sys/cam/scsi/scsi_da.c	Thu Jul 17 23:05:20 2014	(r268816)
@@ -1383,10 +1383,7 @@ dastrategy(struct bio *bp)
 	 * Place it in the queue of disk activities for this disk
 	 */
 	if (bp->bio_cmd == BIO_DELETE) {
-		if (DA_SIO)
-			bioq_disksort(&softc->delete_queue, bp);
-		else
-			bioq_insert_tail(&softc->delete_queue, bp);
+		bioq_disksort(&softc->delete_queue, bp);
 	} else if (DA_SIO) {
 		bioq_disksort(&softc->bio_queue, bp);
 	} else {
@@ -2805,16 +2802,9 @@ cmd6workaround(union ccb *ccb)
 				  da_delete_method_desc[old_method],
 				  da_delete_method_desc[softc->delete_method]);
 
-		if (DA_SIO) {
-			while ((bp = bioq_takefirst(&softc->delete_run_queue))
-			    != NULL)
-				bioq_disksort(&softc->delete_queue, bp);
-		} else {
-			while ((bp = bioq_takefirst(&softc->delete_run_queue))
-			    != NULL)
-				bioq_insert_tail(&softc->delete_queue, bp);
-		}
-		bioq_insert_tail(&softc->delete_queue,
+		while ((bp = bioq_takefirst(&softc->delete_run_queue)) != NULL)
+			bioq_disksort(&softc->delete_queue, bp);
+		bioq_disksort(&softc->delete_queue,
 		    (struct bio *)ccb->ccb_h.ccb_bp);
 		ccb->ccb_h.ccb_bp = NULL;
 		return (0);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201407172305.s6HN5KiV055259>