Wouldn't it make more sense to have a new member in th Scsi_Host_template that gets called for these request early from ->queue_rq instead of the new request_queue and custome ops? FYI, I think reusing the block layer for all these command is a good idea but the way it is done here seems a bit ugly and not very maintainable.