diff options
author | ken <ken@FreeBSD.org> | 2013-04-02 17:29:17 +0000 |
---|---|---|
committer | ken <ken@FreeBSD.org> | 2013-04-02 17:29:17 +0000 |
commit | 65d6e2cf04f600a82865a903278b095aa7e70b6b (patch) | |
tree | 5e99a93d673ce81902700cce52256122a45b2c7f | |
parent | c634b4630f211f12467ee370df2aec9ec88bad36 (diff) | |
download | FreeBSD-src-65d6e2cf04f600a82865a903278b095aa7e70b6b.zip FreeBSD-src-65d6e2cf04f600a82865a903278b095aa7e70b6b.tar.gz |
Fix sending virtual scatter/gather lists from the CTL CAM frontend
peripheral.
Sponsored by: Spectra Logic
-rw-r--r-- | sys/cam/ctl/scsi_ctl.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/cam/ctl/scsi_ctl.c b/sys/cam/ctl/scsi_ctl.c index c6f3700..30f16f7 100644 --- a/sys/cam/ctl/scsi_ctl.c +++ b/sys/cam/ctl/scsi_ctl.c @@ -916,7 +916,7 @@ ctlfestart(struct cam_periph *periph, union ccb *start_ccb) if (io->io_hdr.flags & CTL_FLAG_BUS_ADDR) flags |= CAM_DATA_SG_PADDR; else - flags &= ~CAM_DATA_SG; + flags |= CAM_DATA_SG; data_ptr = (uint8_t *)cam_sglist; dxfer_len = io->scsiio.kern_data_len; } else { @@ -938,6 +938,10 @@ ctlfestart(struct cam_periph *periph, union ccb *start_ccb) data_ptr = sglist[*ti].addr; dxfer_len = sglist[*ti].len; csio->sglist_cnt = 0; + if (io->io_hdr.flags & CTL_FLAG_BUS_ADDR) + flags |= CAM_DATA_PADDR; + else + flags |= CAM_DATA_VADDR; cmd_info->flags |= CTLFE_CMD_PIECEWISE; (*ti)++; } |