aboutsummaryrefslogtreecommitdiffstats
path: root/net/rds/ib.c
diff options
context:
space:
mode:
authorZach Brown <zach.brown@oracle.com>2010-07-06 18:09:56 -0400
committerAndy Grover <andy.grover@oracle.com>2010-09-08 21:16:34 -0400
commit515e079dab19cf774d1eec6e5f4ed65509e31ef1 (patch)
tree1dcc0f211946c47cd19b6823574aaa1a32982ffa /net/rds/ib.c
parent8aeb1ba6630ffd44001ae9833842794df0107676 (diff)
RDS/IB: create a work queue for FMR flushing
This patch moves the FMR flushing work in to its own mult-threaded work queue. This is to maintain performance in preparation for returning the main krdsd work queue back to a single threaded work queue to avoid deep-rooted concurrency bugs. This is also good because it further separates FMRs, which might be removed some day, from the rest of the code base. Signed-off-by: Zach Brown <zach.brown@oracle.com>
Diffstat (limited to 'net/rds/ib.c')
-rw-r--r--net/rds/ib.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/net/rds/ib.c b/net/rds/ib.c
index af1ef18b6ff0..d2007b931616 100644
--- a/net/rds/ib.c
+++ b/net/rds/ib.c
@@ -351,6 +351,7 @@ void rds_ib_exit(void)
351 rds_ib_sysctl_exit(); 351 rds_ib_sysctl_exit();
352 rds_ib_recv_exit(); 352 rds_ib_recv_exit();
353 rds_trans_unregister(&rds_ib_transport); 353 rds_trans_unregister(&rds_ib_transport);
354 rds_ib_fmr_exit();
354} 355}
355 356
356struct rds_transport rds_ib_transport = { 357struct rds_transport rds_ib_transport = {
@@ -386,10 +387,14 @@ int __init rds_ib_init(void)
386 387
387 INIT_LIST_HEAD(&rds_ib_devices); 388 INIT_LIST_HEAD(&rds_ib_devices);
388 389
389 ret = ib_register_client(&rds_ib_client); 390 ret = rds_ib_fmr_init();
390 if (ret) 391 if (ret)
391 goto out; 392 goto out;
392 393
394 ret = ib_register_client(&rds_ib_client);
395 if (ret)
396 goto out_fmr_exit;
397
393 ret = rds_ib_sysctl_init(); 398 ret = rds_ib_sysctl_init();
394 if (ret) 399 if (ret)
395 goto out_ibreg; 400 goto out_ibreg;
@@ -412,6 +417,8 @@ out_sysctl:
412 rds_ib_sysctl_exit(); 417 rds_ib_sysctl_exit();
413out_ibreg: 418out_ibreg:
414 rds_ib_unregister_client(); 419 rds_ib_unregister_client();
420out_fmr_exit:
421 rds_ib_fmr_exit();
415out: 422out:
416 return ret; 423 return ret;
417} 424}