Added new 1130* test file for PGR simple reserve testing.

Added infrastructure to support reading, setting, and
clearing reservations.
This commit is contained in:
Lee Duncan
2012-12-22 13:50:55 -08:00
parent cc4969d167
commit 474cec5556
8 changed files with 525 additions and 207 deletions

View File

@@ -666,15 +666,30 @@ scsi_persistentreservein_datain_unmarshall(struct scsi_task *task)
rk->keys[i] = scsi_get_uint64(&task->datain.data[8 + i * 8]);
}
return rk;
case SCSI_PERSISTENT_RESERVE_READ_RESERVATION:
rr = scsi_malloc(task, sizeof(struct scsi_persistent_reserve_in_read_reservation));
case SCSI_PERSISTENT_RESERVE_READ_RESERVATION: {
size_t alloc_sz;
i = scsi_get_uint32(&task->datain.data[4]);
alloc_sz = offsetof(
struct scsi_persistent_reserve_in_read_reservation,
reserved) + i;
rr = scsi_malloc(task, alloc_sz);
if (rr == NULL) {
return NULL;
}
rr->prgeneration = scsi_get_uint32(&task->datain.data[0]);
rr->additional_length = scsi_get_uint32(&task->datain.data[4]);
memset(rr, 0, alloc_sz);
rr->prgeneration = scsi_get_uint32(&task->datain.data[0]);
if (i > 0) {
rr->reserved = 1;
rr->reservation_key =
scsi_get_uint64(&task->datain.data[8]);
rr->pr_type = task->datain.data[21] & 0xff;
}
return rr;
}
case SCSI_PERSISTENT_RESERVE_REPORT_CAPABILITIES:
rc = scsi_malloc(task, sizeof(struct scsi_persistent_reserve_in_report_capabilities));
if (rc == NULL) {