In addition to r259632 completely block receive upcalls if we have more

data than we need.  This reduces lock pressure from xprt_active() side.
This commit is contained in:
Alexander Motin 2013-12-29 03:43:25 +00:00
parent 71694e554d
commit 4a240f6ce7
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=260031

View file

@ -619,7 +619,15 @@ svc_vc_process_pending(SVCXPRT *xprt)
}
}
so->so_rcv.sb_lowat = imax(1, imin(cd->resid, so->so_rcv.sb_hiwat / 2));
/*
* Block receive upcalls if we have more data pending,
* otherwise report our need.
*/
if (cd->mpending)
so->so_rcv.sb_lowat = INT_MAX;
else
so->so_rcv.sb_lowat =
imax(1, imin(cd->resid, so->so_rcv.sb_hiwat / 2));
return (TRUE);
}