Christoph Hellwig wrote:
This patch updates st to use scsi_execute instead of scsi_execute_async for all scsi commands except the main I/O path. The advantage is that these helpers do all the request tracking for these synchronous I/Os so that there is no need for st_request structures. It also decouples these helper scsi commands from the main tape buffer, allowing for an easier switchover to the generic block request mapping routines for the main I/O path later on.
I guess I messed that up. I am not sure why I went with scsi_execute_async for st.
But in my past attempts to convert these drivers to the block layer I was trying to make some nice function like scsi_execute and friends where the ULD does not have to worry about setting up any structure. Instead, we could have st and sg use the block layer functions directly like how block/scsi_ioct.c does. So the ULD would get a request, fill out the necessary fields, call blk_rq_map_user and call blk_execute*. Is is better to have a scsi API that sets things up for the ULDs or is the abstraction not worth it?
- : send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html