summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZach Brown <zach.brown@oracle.com>2010-07-07 02:08:48 +0400
committerAndy Grover <andy.grover@oracle.com>2010-09-09 05:16:35 +0400
commit80c51be56ffa257d3177f0d750d90be65d30c22f (patch)
tree82c49257057595f9a406c25093ade2871f736241
parent515e079dab19cf774d1eec6e5f4ed65509e31ef1 (diff)
downloadlinux-80c51be56ffa257d3177f0d750d90be65d30c22f.tar.xz
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>
-rw-r--r--net/rds/threads.c2
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)
int __init rds_threads_init(void)
{
- rds_wq = create_workqueue("krdsd");
+ rds_wq = create_singlethread_workqueue("krdsd");
if (!rds_wq)
return -ENOMEM;