diff options
author | scottl <scottl@FreeBSD.org> | 2013-09-24 16:50:53 +0000 |
---|---|---|
committer | scottl <scottl@FreeBSD.org> | 2013-09-24 16:50:53 +0000 |
commit | 108b7070e7a17abc52f44f333ba095f8f0eafc3a (patch) | |
tree | ccab290b4cfbac27db6123e5df329c2ca4e9a641 /sys/dev/hpt27xx | |
parent | 6633bf70ed24c304037f64ca2f28e6ea8d2a0b47 (diff) | |
download | FreeBSD-src-108b7070e7a17abc52f44f333ba095f8f0eafc3a.zip FreeBSD-src-108b7070e7a17abc52f44f333ba095f8f0eafc3a.tar.gz |
Update the CAM API for FreeBSD 10:
- Remove the timeout_ch field. It's been deprecated since FreeBSD 7.0;
MPSAFE drivers should be managing their own timeout storage. The
remaining non-MPSAFE drivers have been modified to also manage their own
storage, and should be considered for updating to MPSAFE (or removal)
during the FreeBSD 10.x lifecycle.
- Add fields related to soft timeouts and quality of service, to be used
in upcoming work.
- Add room for more flags in the CCB header and path_inq structures.
- Begin support for extended 64-bit LUNs.
- Bump the CAM version number to 0x18, but add compat shims. Tested with
camcontrol and smartctl.
Reviewed by: nathanw, ken, kib
Approved by: re
Obtained from: Netflix
Diffstat (limited to 'sys/dev/hpt27xx')
-rw-r--r-- | sys/dev/hpt27xx/hpt27xx_osm_bsd.c | 6 | ||||
-rw-r--r-- | sys/dev/hpt27xx/os_bsd.h | 1 |
2 files changed, 4 insertions, 3 deletions
diff --git a/sys/dev/hpt27xx/hpt27xx_osm_bsd.c b/sys/dev/hpt27xx/hpt27xx_osm_bsd.c index 3c9f0ac..d66db18 100644 --- a/sys/dev/hpt27xx/hpt27xx_osm_bsd.c +++ b/sys/dev/hpt27xx/hpt27xx_osm_bsd.c @@ -432,7 +432,7 @@ static void os_cmddone(PCOMMAND pCmd) KdPrint(("os_cmddone(%p, %d)", pCmd, pCmd->Result)); - untimeout(hpt_timeout, pCmd, ccb->ccb_h.timeout_ch); + untimeout(hpt_timeout, pCmd, ext->timeout_ch); switch(pCmd->Result) { case RETURN_SUCCESS: @@ -510,8 +510,7 @@ static void hpt_io_dmamap_callback(void *arg, bus_dma_segment_t *segs, int nsegs BUS_DMASYNC_PREWRITE); } } - - ext->ccb->ccb_h.timeout_ch = timeout(hpt_timeout, pCmd, HPT_OSM_TIMEOUT); + ext->timeout_ch = timeout(hpt_timeout, pCmd, HPT_OSM_TIMEOUT); ldm_queue_cmd(pCmd); } @@ -1048,6 +1047,7 @@ static void hpt_final_init(void *dummy) os_printk("Can't create dma map(%d)", i); return ; } + callout_handle_init(&ext->timeout_ch); } if ((devq = cam_simq_alloc(os_max_queue_comm)) == NULL) { diff --git a/sys/dev/hpt27xx/os_bsd.h b/sys/dev/hpt27xx/os_bsd.h index e3f8e7d..6de4dbb 100644 --- a/sys/dev/hpt27xx/os_bsd.h +++ b/sys/dev/hpt27xx/os_bsd.h @@ -174,6 +174,7 @@ typedef struct _os_cmdext { struct _os_cmdext *next; union ccb *ccb; bus_dmamap_t dma_map; + struct callout_handle timeout_ch; SG psg[os_max_sg_descriptors]; } OS_CMDEXT, *POS_CMDEXT; |