srpt_handle_cmd is always called either from the ib_srpt completion thread, or cm_handler context, which both can sleep. This means we can handle the CDB directly instead of doing another context switch. Signed-off-by: Christoph Hellwig <hch@xxxxxx> Index: lio-core/drivers/infiniband/ulp/srpt/ib_srpt.c =================================================================== --- lio-core.orig/drivers/infiniband/ulp/srpt/ib_srpt.c 2011-08-29 12:30:23.655553592 +0200 +++ lio-core/drivers/infiniband/ulp/srpt/ib_srpt.c 2011-08-29 12:39:47.515524802 +0200 @@ -1795,7 +1795,7 @@ static int srpt_handle_cmd(struct srpt_r else WARN_ON_ONCE(ret); - transport_generic_handle_cdb(cmd); + transport_handle_cdb_direct(cmd); return 0; send_sense: -- To unsubscribe from this list: send the line "unsubscribe target-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html