diff options
author | Zach Brown <zach.brown@oracle.com> | 2010-07-06 18:08:48 -0400 |
---|---|---|
committer | Andy Grover <andy.grover@oracle.com> | 2010-09-08 21:16:35 -0400 |
commit | 80c51be56ffa257d3177f0d750d90be65d30c22f (patch) | |
tree | 82c49257057595f9a406c25093ade2871f736241 /net/rds/threads.c | |
parent | 515e079dab19cf774d1eec6e5f4ed65509e31ef1 (diff) |
RDS: return to a single-threaded krdsd
We were seeing very nasty bugs due to fundamental assumption the current code
makes about concurrent work struct processing. The code simpy isn't able to
handle concurrent connection shutdown work function execution today, for
example, which is very much possible once a multi-threaded krdsd was
introduced. The problem compounds as additional work structs are added to the
mix.
krdsd is no longer perforance critical now that send and receive posting and
FMR flushing are done elsewhere, so the safest fix is to move back to the
single threaded krdsd that the current code was built around.
Signed-off-by: Zach Brown <zach.brown@oracle.com>
Diffstat (limited to 'net/rds/threads.c')
-rw-r--r-- | net/rds/threads.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/rds/threads.c b/net/rds/threads.c index 2bab9bf07b91..c08c220efac5 100644 --- a/net/rds/threads.c +++ b/net/rds/threads.c | |||
@@ -214,7 +214,7 @@ void rds_threads_exit(void) | |||
214 | 214 | ||
215 | int __init rds_threads_init(void) | 215 | int __init rds_threads_init(void) |
216 | { | 216 | { |
217 | rds_wq = create_workqueue("krdsd"); | 217 | rds_wq = create_singlethread_workqueue("krdsd"); |
218 | if (!rds_wq) | 218 | if (!rds_wq) |
219 | return -ENOMEM; | 219 | return -ENOMEM; |
220 | 220 | ||