scsi: Free req and data in scsi_common::exec_inquery

It is not freed after we're done with it.

Signed-off-by: Asias He <asias@cloudius-systems.com>
scsi: Intorduce req->free_by_driver flag

This is used to tell lower-level scsi driver to free the request,
otherwise the scsi layer will free the request.

read/write/flush scsi are async request, they are freed by the
lower-level scsi driver. Other scsi request are freed by the scsi layer.

Signed-off-by: Asias He <asias@cloudius-systems.com>
scsi: Introduce req->cdb_len

Set req->cdb_len to the actual size of the scsi command and only copy
the actual size of the command.

This reduces the number of bytes we copy.

This also fixes the warning in pvscsi which complains the size of the
cdb is larger than expected.

Signed-off-by: Asias He <asias@cloudius-systems.com>
scsi: Construct cdb in-place

Instead of copying a scsi cdb, construct it in-place.
This saves 16 bytes of memory copying on every read or write.

Signed-off-by: Asias He <asias@cloudius-systems.com>
Merge branch 'scsi.cleanup' of https://github.com/asias/osv

"Scsi fix and improvements".

Signed-off-by: Avi Kivity <avi@cloudius-systems.com>