summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2012-07-08 19:11:29 +0200
committercinap_lenrek <cinap_lenrek@gmx.de>2012-07-08 19:11:29 +0200
commita360bddee7a4ce265e7a12cd8b2a857f4b536e0a (patch)
tree865e7b74623e6bb5b7bffae7a6e2a8c61b3b1b71
parent2d09d805f3b08db1c4dc0cfc1c1382a6a3182abb (diff)
downloadplan9front-a360bddee7a4ce265e7a12cd8b2a857f4b536e0a.tar.xz
qio: raise critical queue bloat threshold from 2 to 10 times to queue limit
the limit for overqueueing was too small for stuff like fcp on a fileserver connected with a standard 32K limit pipe like ramfs. fcp usesd 8K*16procs > 32K*2 the biggest queue limit used in the kernel is 256K making the maximum queue bloat 2.5MB or 320K for standard pipes. that should be big enougth to never happen in practice unless there is a bug which we like to catch before we exhaust all kernel memory.
-rw-r--r--sys/src/9/port/qio.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/src/9/port/qio.c b/sys/src/9/port/qio.c
index 8fb108511..caf09a4bd 100644
--- a/sys/src/9/port/qio.c
+++ b/sys/src/9/port/qio.c
@@ -1193,7 +1193,7 @@ qbwrite(Queue *q, Block *b)
poperror();
return n;
}
- if(q->len >= q->limit*2){
+ if(q->len >= q->limit*10){
iunlock(q);
error(Egreg);
}
@@ -1241,7 +1241,7 @@ qbwrite(Queue *q, Block *b)
*
* Note - this is moderately dangerous since a process
* that keeps getting interrupted and rewriting will
- * queue infinite crud.
+ * queue up to 10 times the queue limit before failing.
*/
for(;;){
if(q->noblock || qnotfull(q))