Fix three problems in large (>2TB) device handling:

- Make sure we don't release the READ CAPACITY CCB twice
 - If we have a device that needs a 16 byte READ CAPACITY command, make
   sure we call xpt_schedule() so we can get a CCB.
 - Don't unlock the peripheral until we're fully probed.

Many thanks to Julian Elischer for providing hardware and testing this.

Tested by:	julian
This commit is contained in:
Kenneth D. Merry 2003-05-03 00:21:40 +00:00
parent 278286256b
commit 3674802f42

View File

@ -1548,8 +1548,8 @@ dadone(struct cam_periph *periph, union ccb *done_ccb)
softc->state = DA_STATE_PROBE2;
free(rdcap, M_TEMP);
xpt_release_ccb(done_ccb);
cam_periph_unlock(periph);
break;
xpt_schedule(periph, /*priority*/5);
return;
}
} else {
block_size = scsi_4btoul(rcaplong->length);