Author: smh
Date: Sun Oct 26 18:41:01 2014
New Revision: 273704
URL: https://svnweb.freebsd.org/changeset/base/273704

Log:
  Fix CF ERASE breakage caused by 268205.
  
  This prevents BIO_DELETE requests getting stuck in the TRIM queue which
  results in a panic on shutdown due to outstanding requests.
  
  PR:           194606
  Reported by:  Guido Falsi
  Reviewed by:  mav
  MFC after:    3 days
  Sponsored by: Multiplay

Modified:
  head/sys/cam/ata/ata_da.c

Modified: head/sys/cam/ata/ata_da.c
==============================================================================
--- head/sys/cam/ata/ata_da.c   Sun Oct 26 18:30:35 2014        (r273703)
+++ head/sys/cam/ata/ata_da.c   Sun Oct 26 18:41:01 2014        (r273704)
@@ -1483,9 +1483,15 @@ ada_dsmtrim(struct ada_softc *softc, str
 static void
 ada_cfaerase(struct ada_softc *softc, struct bio *bp, struct ccb_ataio *ataio)
 {
+       struct trim_request *req = &softc->trim_req;
        uint64_t lba = bp->bio_pblkno;
        uint16_t count = bp->bio_bcount / softc->params.secsize;
 
+       bzero(req, sizeof(*req));
+       TAILQ_INIT(&req->bps);
+       bioq_remove(&softc->trim_queue, bp);
+       TAILQ_INSERT_TAIL(&req->bps, bp, bio_queue);
+
        cam_fill_ataio(ataio,
            ada_retry_count,
            adadone,
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to