Date: Sun, 25 Aug 2013 23:16:52 +0000 (UTC) From: Alexander Motin <mav@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254891 - in projects/camlock/sys: cam dev/ahci dev/ata dev/mvs dev/siis Message-ID: <201308252316.r7PNGq3I016711@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: mav Date: Sun Aug 25 23:16:52 2013 New Revision: 254891 URL: http://svnweb.freebsd.org/changeset/base/254891 Log: Since command completion no longer needs SIM lock and even requires one to be dropped during processing, move xpt_batch_start()/xpt_batch_done() out of it and assert that. Modified: projects/camlock/sys/cam/cam_xpt.c projects/camlock/sys/dev/ahci/ahci.c projects/camlock/sys/dev/ata/ata-all.c projects/camlock/sys/dev/mvs/mvs.c projects/camlock/sys/dev/siis/siis.c Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Sun Aug 25 22:18:05 2013 (r254890) +++ projects/camlock/sys/cam/cam_xpt.c Sun Aug 25 23:16:52 2013 (r254891) @@ -4411,7 +4411,7 @@ xpt_batch_done(struct cam_sim *sim) { struct ccb_hdr *ccb_h; - CAM_SIM_UNLOCK(sim); + mtx_assert(sim->mtx, MA_NOTOWNED); mtx_lock(&sim->sim_doneq_mtx); KASSERT((sim->sim_doneq_flags & CAM_SIM_DQ_BATCH) != 0, ("Batch flag was not set")); @@ -4424,7 +4424,6 @@ xpt_batch_done(struct cam_sim *sim) mtx_lock(&sim->sim_doneq_mtx); } mtx_unlock(&sim->sim_doneq_mtx); - CAM_SIM_LOCK(sim); } union ccb * Modified: projects/camlock/sys/dev/ahci/ahci.c ============================================================================== --- projects/camlock/sys/dev/ahci/ahci.c Sun Aug 25 22:18:05 2013 (r254890) +++ projects/camlock/sys/dev/ahci/ahci.c Sun Aug 25 23:16:52 2013 (r254891) @@ -1469,11 +1469,11 @@ ahci_ch_intr_locked(void *data) device_t dev = (device_t)data; struct ahci_channel *ch = device_get_softc(dev); - mtx_lock(&ch->mtx); xpt_batch_start(ch->sim); + mtx_lock(&ch->mtx); ahci_ch_intr(data); - xpt_batch_done(ch->sim); mtx_unlock(&ch->mtx); + xpt_batch_done(ch->sim); } static void Modified: projects/camlock/sys/dev/ata/ata-all.c ============================================================================== --- projects/camlock/sys/dev/ata/ata-all.c Sun Aug 25 22:18:05 2013 (r254890) +++ projects/camlock/sys/dev/ata/ata-all.c Sun Aug 25 23:16:52 2013 (r254891) @@ -352,11 +352,11 @@ ata_interrupt(void *data) { struct ata_channel *ch = (struct ata_channel *)data; - mtx_lock(&ch->state_mtx); xpt_batch_start(ch->sim); + mtx_lock(&ch->state_mtx); ata_interrupt_locked(data); - xpt_batch_done(ch->sim); mtx_unlock(&ch->state_mtx); + xpt_batch_done(ch->sim); } static void Modified: projects/camlock/sys/dev/mvs/mvs.c ============================================================================== --- projects/camlock/sys/dev/mvs/mvs.c Sun Aug 25 22:18:05 2013 (r254890) +++ projects/camlock/sys/dev/mvs/mvs.c Sun Aug 25 23:16:52 2013 (r254891) @@ -653,11 +653,11 @@ mvs_ch_intr_locked(void *data) device_t dev = (device_t)arg->arg; struct mvs_channel *ch = device_get_softc(dev); - mtx_lock(&ch->mtx); xpt_batch_start(ch->sim); + mtx_lock(&ch->mtx); mvs_ch_intr(data); - xpt_batch_done(ch->sim); mtx_unlock(&ch->mtx); + xpt_batch_done(ch->sim); } static void Modified: projects/camlock/sys/dev/siis/siis.c ============================================================================== --- projects/camlock/sys/dev/siis/siis.c Sun Aug 25 22:18:05 2013 (r254890) +++ projects/camlock/sys/dev/siis/siis.c Sun Aug 25 23:16:52 2013 (r254891) @@ -837,11 +837,11 @@ siis_ch_intr_locked(void *data) device_t dev = (device_t)data; struct siis_channel *ch = device_get_softc(dev); - mtx_lock(&ch->mtx); xpt_batch_start(ch->sim); + mtx_lock(&ch->mtx); siis_ch_intr(data); - xpt_batch_done(ch->sim); mtx_unlock(&ch->mtx); + xpt_batch_done(ch->sim); } static void
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201308252316.r7PNGq3I016711>