From owner-svn-src-head@FreeBSD.ORG Tue Sep 2 18:32:42 2014 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 245B6D59; Tue, 2 Sep 2014 18:32:42 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 0FDB9115B; Tue, 2 Sep 2014 18:32:42 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s82IWfpb088448; Tue, 2 Sep 2014 18:32:41 GMT (envelope-from kadesai@FreeBSD.org) Received: (from kadesai@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s82IWfWj088446; Tue, 2 Sep 2014 18:32:41 GMT (envelope-from kadesai@FreeBSD.org) Message-Id: <201409021832.s82IWfWj088446@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kadesai set sender to kadesai@FreeBSD.org using -f From: Kashyap D Desai Date: Tue, 2 Sep 2014 18:32:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r270973 - head/sys/dev/mrsas X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Sep 2014 18:32:42 -0000 Author: kadesai Date: Tue Sep 2 18:32:41 2014 New Revision: 270973 URL: http://svnweb.freebsd.org/changeset/base/270973 Log: 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 below call trace if WITNESS is enabled. witness_warn() at witness_warn+0x4b5/frame 0xfffffe011f929a00 uma_zalloc_arg() at uma_zalloc_arg+0x3b/frame 0xfffffe011f929a70 malloc() at malloc+0x192/frame 0xfffffe011f929ac0 mrsas_bus_scan_sim() at mrsas_bus_scan_sim+0x32/frame 0xfffffe011f929af0 mrsas_aen_handler() at mrsas_aen_handler+0x11c/frame 0xfffffe011f929b20 taskqueue_run_locked() at taskqueue_run_locked+0xf0/frame 0xfffffe011f929b80 taskqueue_thread_loop() at taskqueue_thread_loop+0x9b/frame 0xfffffe011f929bb0 fork_exit() at fork_exit+0x84/frame 0xfffffe011f929bf0 fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe011f929bf0 Submitted by: kadesai Reviewed by: ambrisko MFC after: 3 days Modified: head/sys/dev/mrsas/mrsas.h head/sys/dev/mrsas/mrsas_cam.c Modified: head/sys/dev/mrsas/mrsas.h ============================================================================== --- head/sys/dev/mrsas/mrsas.h Tue Sep 2 18:21:19 2014 (r270972) +++ head/sys/dev/mrsas/mrsas.h Tue Sep 2 18:32:41 2014 (r270973) @@ -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: head/sys/dev/mrsas/mrsas_cam.c ============================================================================== --- head/sys/dev/mrsas/mrsas_cam.c Tue Sep 2 18:21:19 2014 (r270972) +++ head/sys/dev/mrsas/mrsas_cam.c Tue Sep 2 18:32:41 2014 (r270973) @@ -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); }