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);
 }
 
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to