Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 8 Sep 2014 08:25:33 +0000 (UTC)
From:      Kashyap D Desai <kadesai@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: r271252 - stable/10/sys/dev/mrsas
Message-ID:  <201409080825.s888PXk3027387@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kadesai
Date: Mon Sep  8 08:25:33 2014
New Revision: 271252
URL: http://svnweb.freebsd.org/changeset/base/271252

Log:
  MFC r270973
  
  r270973
  Fix for WITNESS warning while doing xpt_rescan.
  This happen when converting any JBOD to RAID or creating
  any new RAID from Unconfigured Drives.
  
  Without this fix, user may see call trace if  WITNESS is enabled.
  System may panic when reconfiguring the RAID.
  
  Reviewed by: ambrisko
  Approved by: re (gleb)
  
  ---

Modified:
  stable/10/sys/dev/mrsas/mrsas.h
  stable/10/sys/dev/mrsas/mrsas_cam.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/dev/mrsas/mrsas.h
==============================================================================
--- stable/10/sys/dev/mrsas/mrsas.h	Mon Sep  8 08:12:09 2014	(r271251)
+++ stable/10/sys/dev/mrsas/mrsas.h	Mon Sep  8 08:25:33 2014	(r271252)
@@ -101,7 +101,7 @@ __FBSDID("$FreeBSD$");
  */
 #define BYTE_ALIGNMENT        1 
 #define MRSAS_MAX_NAME_LENGTH 32  
-#define MRSAS_VERSION "06.704.01.00-fbsd"        
+#define MRSAS_VERSION "06.704.01.01-fbsd"        
 #define MRSAS_ULONG_MAX     0xFFFFFFFFFFFFFFFF
 #define MRSAS_DEFAULT_TIMEOUT 0x14 //temp 
 #define DONE 0

Modified: stable/10/sys/dev/mrsas/mrsas_cam.c
==============================================================================
--- stable/10/sys/dev/mrsas/mrsas_cam.c	Mon Sep  8 08:12:09 2014	(r271251)
+++ stable/10/sys/dev/mrsas/mrsas_cam.c	Mon Sep  8 08:25:33 2014	(r271252)
@@ -1116,18 +1116,16 @@ int mrsas_bus_scan(struct mrsas_softc *s
     union ccb *ccb_0;
     union ccb *ccb_1;
 
-    mtx_lock(&sc->sim_lock);
     if ((ccb_0 = xpt_alloc_ccb()) == NULL) {
-        mtx_unlock(&sc->sim_lock);
         return(ENOMEM);
     }
 
     if ((ccb_1 = xpt_alloc_ccb()) == NULL) {
 	xpt_free_ccb(ccb_0);
-        mtx_unlock(&sc->sim_lock);
         return(ENOMEM);
     } 
 
+    mtx_lock(&sc->sim_lock);
     if (xpt_create_path(&ccb_0->ccb_h.path, xpt_periph, cam_sim_path(sc->sim_0),
             CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP){
         xpt_free_ccb(ccb_0);
@@ -1144,9 +1142,9 @@ int mrsas_bus_scan(struct mrsas_softc *s
         return(EIO);
     }
 
+    mtx_unlock(&sc->sim_lock);
     xpt_rescan(ccb_0);
     xpt_rescan(ccb_1);
-    mtx_unlock(&sc->sim_lock);
 
     return(0);
 }
@@ -1161,19 +1159,18 @@ int mrsas_bus_scan_sim(struct mrsas_soft
 {
     union ccb *ccb;
 
-    mtx_lock(&sc->sim_lock);
     if ((ccb = xpt_alloc_ccb()) == NULL) {
-        mtx_unlock(&sc->sim_lock);
         return(ENOMEM);
     }
+    mtx_lock(&sc->sim_lock);
     if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(sim),
             CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP){
         xpt_free_ccb(ccb);
         mtx_unlock(&sc->sim_lock);
         return(EIO);
     }
-    xpt_rescan(ccb);
     mtx_unlock(&sc->sim_lock);
+    xpt_rescan(ccb);
 
     return(0);
 }



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