This looks reasonable to me, although of course I don't have a way to test it. Any reason for the move from ->end_io_data to ->special? I thought that ->special was something we'd get rid of sooner or later now that we can have additional per-cmd data even for !mq.