tech-kern archive

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

Re: PR_GROWINGNOWAIT useless ?



On Fri, May 16, 2025 at 02:08:33AM +0000, Taylor R Campbell wrote:
> > Date: Tue, 6 May 2025 11:54:50 +0200
> > From: Manuel Bouyer <bouyer%antioche.eu.org@localhost>
> > 
> > while investigating the deadlock reported in
> > https://mail-index.netbsd.org/tech-kern/2025/05/05/msg030407.html
> > I looked at pool_grow(). It seems that the PR_GROWINGNOWAIT is used only for
> > this:
> >                         if (pp->pr_flags & PR_GROWINGNOWAIT) {
> >                                 /*
> >                                  * This needs an unlock/relock dance so
> >                                  * that the other caller has a chance to
> >                                  * run and actually do the thing.  Note 
> >                                  * that this is effectively a busy-wait.
> >                                  */  
> >                                 mutex_exit(&pp->pr_lock);
> >                                 mutex_enter(&pp->pr_lock);
> >                                 return ERESTART;
> >                         }
> > 
> > but as I understand it, the thread setting PR_GROWINGNOWAIT in pool_grow()
> > is holding the pr_lock and will never release it before clearing
> > PR_GROWINGNOWAIT. If pool_allocator_alloc() or pool_alloc_item_header()
> > was releasing the lock, it would have to eventually sleep to reaquire
> > it and it's not allowed without PR_WAITOK.
> > So it seems that PR_GROWINGNOWAIT could be removed.
> 
> It looks like you deleted this code:
> 
> https://mail-index.netbsd.org/source-changes/2025/05/09/msg156870.html
> 
> I think you should put the code back as it was for now, because

done

-- 
Manuel Bouyer <bouyer%antioche.eu.org@localhost>
     NetBSD: 26 ans d'experience feront toujours la difference
--


Home | Main Index | Thread Index | Old Index