svn commit: r327711 - head/sys/cam/nvme

Scott Long scottl at FreeBSD.org
Tue Jan 9 00:17:16 UTC 2018


Author: scottl
Date: Tue Jan  9 00:17:15 2018
New Revision: 327711
URL: https://svnweb.freebsd.org/changeset/base/327711

Log:
  Don't hold the periph locks during dump.
  
  Obtained from:	Netflix

Modified:
  head/sys/cam/nvme/nvme_da.c

Modified: head/sys/cam/nvme/nvme_da.c
==============================================================================
--- head/sys/cam/nvme/nvme_da.c	Tue Jan  9 00:10:59 2018	(r327710)
+++ head/sys/cam/nvme/nvme_da.c	Tue Jan  9 00:17:15 2018	(r327711)
@@ -388,15 +388,12 @@ ndadump(void *arg, void *virtual, vm_offset_t physical
 	dp = arg;
 	periph = dp->d_drv1;
 	softc = (struct nda_softc *)periph->softc;
-	cam_periph_lock(periph);
 	secsize = softc->disk->d_sectorsize;
 	lba = offset / secsize;
 	count = length / secsize;
 	
-	if ((periph->flags & CAM_PERIPH_INVALID) != 0) {
-		cam_periph_unlock(periph);
+	if ((periph->flags & CAM_PERIPH_INVALID) != 0)
 		return (ENXIO);
-	}
 
 	/* xpt_get_ccb returns a zero'd allocation for the ccb, mimic that here */
 	memset(&nvmeio, 0, sizeof(nvmeio));
@@ -408,7 +405,6 @@ ndadump(void *arg, void *virtual, vm_offset_t physical
 		    0, SF_NO_RECOVERY | SF_NO_RETRY, NULL);
 		if (error != 0)
 			printf("Aborting dump due to I/O error %d.\n", error);
-		cam_periph_unlock(periph);
 
 		return (error);
 	}
@@ -422,7 +418,6 @@ ndadump(void *arg, void *virtual, vm_offset_t physical
 	    0, SF_NO_RECOVERY | SF_NO_RETRY, NULL);
 	if (error != 0)
 		xpt_print(periph->path, "flush cmd failed\n");
-	cam_periph_unlock(periph);
 	return (error);
 }
 


More information about the svn-src-all mailing list