aboutsummaryrefslogtreecommitdiffstats
path: root/fs/dlm/lowcomms.c
diff options
context:
space:
mode:
authorPatrick Caulfield <pcaulfie@redhat.com>2007-09-14 03:49:21 -0400
committerSteven Whitehouse <swhiteho@redhat.com>2007-10-10 03:56:19 -0400
commitd66f8277f53407754f50ae6bada68f1b68d04d48 (patch)
tree8725f182541eb98e1947d8a224e61d66c2c959da /fs/dlm/lowcomms.c
parent49e61f2ef6f7d1d0296e3e30d366b28e0ca595c2 (diff)
[DLM] Make dlm_sendd cond_resched more
Under high recovery loads dlm_sendd can monopolise the CPU and cause soft lockups. This one extra and one moved cond_resched() make it yield a little more during such times keeping work moving. Signed-Off-By: Patrick Caulfield <pcaulfie@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/dlm/lowcomms.c')
-rw-r--r--fs/dlm/lowcomms.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/dlm/lowcomms.c b/fs/dlm/lowcomms.c
index 62a8a6ccd992..58bf3f5cdbe2 100644
--- a/fs/dlm/lowcomms.c
+++ b/fs/dlm/lowcomms.c
@@ -1264,14 +1264,15 @@ static void send_to_sock(struct connection *con)
1264 if (len) { 1264 if (len) {
1265 ret = sendpage(con->sock, e->page, offset, len, 1265 ret = sendpage(con->sock, e->page, offset, len,
1266 msg_flags); 1266 msg_flags);
1267 if (ret == -EAGAIN || ret == 0) 1267 if (ret == -EAGAIN || ret == 0) {
1268 cond_resched();
1268 goto out; 1269 goto out;
1270 }
1269 if (ret <= 0) 1271 if (ret <= 0)
1270 goto send_error; 1272 goto send_error;
1271 } else { 1273 }
1272 /* Don't starve people filling buffers */ 1274 /* Don't starve people filling buffers */
1273 cond_resched(); 1275 cond_resched();
1274 }
1275 1276
1276 spin_lock(&con->writequeue_lock); 1277 spin_lock(&con->writequeue_lock);
1277 e->offset += ret; 1278 e->offset += ret;