Changeset View
Changeset View
Standalone View
Standalone View
head/sys/cam/ctl/scsi_ctl.c
Show First 20 Lines • Show All 722 Lines • ▼ Show 20 Lines | while (io->scsiio.ext_data_filled >= ctl_sglist[idx].len - off) { | ||||
off = 0; | off = 0; | ||||
} | } | ||||
off += io->scsiio.ext_data_filled; | off += io->scsiio.ext_data_filled; | ||||
io->scsiio.ext_data_filled = 0; | io->scsiio.ext_data_filled = 0; | ||||
cam_sglist = cmd_info->cam_sglist; | cam_sglist = cmd_info->cam_sglist; | ||||
*dxfer_len = 0; | *dxfer_len = 0; | ||||
for (i = 0; i < io->scsiio.kern_sg_entries - idx; i++) { | for (i = 0; i < io->scsiio.kern_sg_entries - idx; i++) { | ||||
cam_sglist[i].ds_addr = (bus_addr_t)ctl_sglist[i + idx].addr + off; | cam_sglist[i].ds_addr = (bus_addr_t)(uintptr_t)ctl_sglist[i + idx].addr + off; | ||||
if (ctl_sglist[i + idx].len - off <= bus_softc->maxio - *dxfer_len) { | if (ctl_sglist[i + idx].len - off <= bus_softc->maxio - *dxfer_len) { | ||||
cam_sglist[i].ds_len = ctl_sglist[idx + i].len - off; | cam_sglist[i].ds_len = ctl_sglist[idx + i].len - off; | ||||
*dxfer_len += cam_sglist[i].ds_len; | *dxfer_len += cam_sglist[i].ds_len; | ||||
} else { | } else { | ||||
cam_sglist[i].ds_len = bus_softc->maxio - *dxfer_len; | cam_sglist[i].ds_len = bus_softc->maxio - *dxfer_len; | ||||
cmd_info->cur_transfer_index = idx + i; | cmd_info->cur_transfer_index = idx + i; | ||||
cmd_info->cur_transfer_off = cam_sglist[i].ds_len + off; | cmd_info->cur_transfer_off = cam_sglist[i].ds_len + off; | ||||
cmd_info->flags |= CTLFE_CMD_PIECEWISE; | cmd_info->flags |= CTLFE_CMD_PIECEWISE; | ||||
▲ Show 20 Lines • Show All 1,256 Lines • Show Last 20 Lines |