Il 05/06/2014 05:50, Fam Zheng ha scritto:
> Can you try moving the req allocation and assignments inside process_request
> instead? Then you can fill in req->out directly without the struct
> assignment.
>
The owners of req are do_rdwr_cmd and do_flush_cmd, but do_scsi_cmd and
do_get_id_cmd don't need to allocate.
They don't need it, but using req there and freeing it in
complete_request_early perhaps could simplify the code.
After all, the first three arguments of complete_request_early (s, elem,
inhdr) are a duplicate of VirtIOBlockReq and do_flush_cmd is already
doing a free after complete_request_early.
Paolo
Moving the allocation means transfering the ownership from process_request to
respective cmd functions, and it's not used in two out of four. Not sure much
better than this way, but that's doable.