Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/kern



> > In M_WAIT case, m_reclaim() will run and run until get mbuf cluster
> > if mclpool limit reached.  If m_reclaim() repeatedly but cannot to
> > get new mbuf cluster, m_clget() will not return.
> > 
> > network stacks using mbufs is use with M_DONTWAIT, but it will failed
> > to get new mbuf cluster in this case.  "freeze" means that.
> 
> Yes, hitting the limit would trigger m_reclaim() and m_clget() would
> block.  It is a quite similar condition to memory or KVA starvation.
> However, why such blocking in sosend() is problematic, or, how is it
> different from any other WAITOK allocation?
> 
> I see the point about the limit.  Inadequately low limit may cause many
> blocking processes, while there is still a lot of memory.  However, in
> such case, perhaps you want PR_LIMITFAIL, instead of PR_NOWAIT?  Note
> that PR_NOWAIT (M_DONTWAIT) has other implications, e.g. it might fail
> due to try-locks.  So, I think your fix is incorrect.

Can this be fixed, please?

Thanks.

-- 
Mindaugas


Home | Main Index | Thread Index | Old Index