[rds-devel] [PATCH] In rds_barrier, RDMA_DONE should be cleared
Olaf Kirch
olaf.kirch at oracle.com
Mon Jan 7 00:45:51 PST 2008
On Saturday 05 January 2008 03:30, Richard Frank wrote:
> Also, we were setting the RDMA_DONE flag when we needed to clear it -
> this was causing excessive CPU utilization in rds-stress.
Like this?
Olaf
--
Olaf Kirch | --- o --- Nous sommes du soleil we love when we play
okir at lst.de | / | \ sol.dhoop.naytheet.ah kin.ir.samse.qurax
---------------------
From: Olaf Kirch <olaf.kirch at oracle.com>
Subject: [RDS] In rds_barrier, RDMA_DONE should be cleared
When we prime the RDS socket's RDMA ID for which we want
to wait, we must clear the RDMA_DONE poll flag, rather than
set it. Bug found by Rick.
Signed-off-by: Olaf Kirch <olaf.kirch at oracle.com>
---
net/rds/rdma.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: ofa-kernel-1.3/net/rds/rdma.c
===================================================================
--- ofa-kernel-1.3.orig/net/rds/rdma.c
+++ ofa-kernel-1.3/net/rds/rdma.c
@@ -695,7 +695,7 @@ int rds_barrier(struct rds_sock *rs, cha
rdma_id = atomic_read(&conn->c_barrier_hwm);
if (args.wait_rdma_id && args.wait_rdma_id > rdma_id) {
if (nonblock) {
- set_bit(RDS_RDMA_DONE, &rs->rs_poll_flag);
+ clear_bit(RDS_RDMA_DONE, &rs->rs_poll_flag);
smp_mb__after_clear_bit();
rds_set_barrier(rs, args.wait_rdma_id);
ret = -EAGAIN;
More information about the rds-devel
mailing list