Libor commented that performance suffers for him from this patch.
Its somewhat surprising since most operations are now done from under
conn->lock.slock.
This is hopefully addressed now that send iocbs can be unlocked
in interrupt context.

Please try/comment.
Tom, please dont commit this yet :)

--- 

SDP used in_atomic to detect atomic context, which, according to
Andrew's comment, doesnt actually catch all atomic conditions.
And there doesnt seem to exist a reliable way to detect atomic
environment. So lets use iocb flags instead, and always schedule
work for a receive iocb.

Signed-off-by: Michael S. Tsirkin <[EMAIL PROTECTED]>

Index: linux-2.6.12.2/drivers/infiniband/ulp/sdp/sdp_iocb.c
===================================================================
--- linux-2.6.12.2.orig/drivers/infiniband/ulp/sdp/sdp_iocb.c   2005-08-09 
17:20:38.000000000 +0300
+++ linux-2.6.12.2/drivers/infiniband/ulp/sdp/sdp_iocb.c        2005-08-09 
17:21:15.000000000 +0300
@@ -326,11 +326,13 @@ void sdp_iocb_complete(struct sdpc_iocb 
 {
        iocb->status = status;
 
-       if (in_atomic() || irqs_disabled()) {
-               INIT_WORK(&iocb->completion, do_iocb_complete, (void *)iocb);
-               schedule_work(&iocb->completion);
-       } else
+       if (!(iocb->flags & SDP_IOCB_F_LOCKED) ||
+           !(iocb->flags & SDP_IOCB_F_RECV))
                do_iocb_complete(iocb);
+       else {
+               INIT_WORK(&iocb->completion, do_iocb_complete, iocb);
+               schedule_work(&iocb->completion);
+       }
 }
 
 /*

-- 
MST
_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to