diff options
author | Zach Brown <zach.brown@oracle.com> | 2010-07-06 18:09:56 -0400 |
---|---|---|
committer | Andy Grover <andy.grover@oracle.com> | 2010-09-08 21:16:34 -0400 |
commit | 515e079dab19cf774d1eec6e5f4ed65509e31ef1 (patch) | |
tree | 1dcc0f211946c47cd19b6823574aaa1a32982ffa /net/rds/ib.c | |
parent | 8aeb1ba6630ffd44001ae9833842794df0107676 (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.c | 9 |
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 | ||
356 | struct rds_transport rds_ib_transport = { | 357 | struct 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(); |
413 | out_ibreg: | 418 | out_ibreg: |
414 | rds_ib_unregister_client(); | 419 | rds_ib_unregister_client(); |
420 | out_fmr_exit: | ||
421 | rds_ib_fmr_exit(); | ||
415 | out: | 422 | out: |
416 | return ret; | 423 | return ret; |
417 | } | 424 | } |