--- vhba-module-org/vhba.c 2008-03-03 19:31:06.000000000 +0100 +++ vhba-module-1.0.0/vhba.c 2008-03-03 20:04:30.000000000 +0100 @@ -425,11 +425,11 @@ ssize_t ret; scmd_dbg(cmd, "request %lu, cdb 0x%x, bufflen %d, use_sg %d\n", - cmd->serial_number, cmd->cmnd[0], cmd->request_bufflen, cmd->use_sg); + cmd->serial_number, cmd->cmnd[0], cmd->sdb.length, cmd->sdb.table.nents); ret = sizeof(vreq); if (DATA_TO_DEVICE(cmd->sc_data_direction)) - ret += cmd->request_bufflen; + ret += cmd->sdb.length; if (ret > buf_len) { @@ -442,7 +442,7 @@ vreq.lun = cmd->device->lun; memcpy(vreq.cdb, cmd->cmnd, MAX_COMMAND_SIZE); vreq.cdb_len = cmd->cmd_len; - vreq.data_len = cmd->request_bufflen; + vreq.data_len = cmd->sdb.length; if (copy_to_user(buf, &vreq, sizeof(vreq))) return -EFAULT; @@ -452,7 +452,7 @@ buf += sizeof(vreq); /* XXX use_sg? */ - if (copy_to_user(buf, cmd->request_buffer, vreq.data_len)) + if (copy_to_user(buf, cmd->sdb.table.sgl, vreq.data_len)) return -EFAULT; } @@ -464,7 +464,7 @@ ssize_t ret = 0; scmd_dbg(cmd, "response %lu, status %x, data len %d, use_sg %d\n", - cmd->serial_number, res->status, res->data_len, cmd->use_sg); + cmd->serial_number, res->status, res->data_len, cmd->sdb.table.nents); if (res->status) { @@ -481,23 +481,23 @@ ret += res->data_len; } - else if (DATA_FROM_DEVICE(cmd->sc_data_direction) && cmd->request_bufflen) + else if (DATA_FROM_DEVICE(cmd->sc_data_direction) && cmd->sdb.length) { size_t to_read; - if (res->data_len > cmd->request_bufflen) + if (res->data_len > cmd->sdb.length) { - scmd_warn(cmd, "truncate data (%d < %d)\n", cmd->request_bufflen, res->data_len); - res->data_len = cmd->request_bufflen; + scmd_warn(cmd, "truncate data (%d < %d)\n", cmd->sdb.length, res->data_len); + res->data_len = cmd->sdb.length; } to_read = res->data_len; - if (cmd->use_sg) + if (cmd->sdb.table.nents) { unsigned char buf_stack[64]; unsigned char *kaddr, *uaddr, *kbuf; - struct scatterlist *sg = cmd->request_buffer; + struct scatterlist *sg = cmd->sdb.table.sgl; int i; uaddr = (unsigned char *) buf; @@ -507,7 +507,7 @@ else kbuf = buf_stack; - for (i = 0; i < cmd->use_sg; i++) + for (i = 0; i < cmd->sdb.table.nents; i++) { size_t len = (sg[i].length < to_read) ? sg[i].length : to_read; @@ -534,13 +534,13 @@ } else { - if (copy_from_user(cmd->request_buffer, buf, res->data_len)) + if (copy_from_user(cmd->sdb.table.sgl, buf, res->data_len)) return -EFAULT; to_read -= res->data_len; } - cmd->resid = to_read; + cmd->sdb.resid = to_read; ret += res->data_len - to_read; }