svn commit: r254891 - in projects/camlock/sys: cam dev/ahci dev/ata dev/mvs dev/siis
Alexander Motin
mav at FreeBSD.org
Sun Aug 25 23:16:54 UTC 2013
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
More information about the svn-src-projects
mailing list