NetBSD-Bugs archive

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

PR/59411 CVS commit: src/sys



The following reply was made to PR kern/59411; it has been noted by GNATS.

From: "Taylor R Campbell" <riastradh%netbsd.org@localhost>
To: gnats-bugs%gnats.NetBSD.org@localhost
Cc: 
Subject: PR/59411 CVS commit: src/sys
Date: Sun, 23 Aug 2026 17:49:11 +0000

 Module Name:	src
 Committed By:	riastradh
 Date:		Sun Aug 23 17:49:11 UTC 2026
 
 Modified Files:
 	src/sys/kern: subr_pool.c
 	src/sys/sys: pool.h
 
 Log Message:
 pool(9): Nix useless PR_GROWINGNOWAIT bit.
 
 This was introduced back in 2017 as an attempt to avoid spurious
 failure in concurrent PR_NOWAIT allocations, while still serializing
 calls to the pool's back end allocator to avoid fragmentation:
 
 https://mail-index.NetBSD.org/source-changes/2017/12/16/msg090490.html
 
 However, this probably doesn't work very well when one pool_get call
 in the middle of pool_grow is _interrupted by_ another one (in an
 interrupt handler) -- the busy wait will turn into a deadlock:
 
 https://mail-index.NetBSD.org/current-users/2017/12/29/msg033000.html
 
 So the logic was changed to keep holding the lock across the backing
 allocator in PR_NOWAIT allocations -- this way, calls to the pool's
 back end allocator are still serialized, but we at least avoid
 holding the lock _while sleeping_ in the back end allocator:
 
 https://mail-index.NetBSD.org/current-users/2017/12/29/msg033001.html
 
 But with that change, the PR_GROWINGNOWAIT bit no longer served any
 purpose, because it only stays set _while the lock is held_ so no
 other threads can observe it anyway.
 
 Cleanup prompted by:
 
 PR kern/59411: deadlock on mbuf pool
 
 
 To generate a diff of this commit:
 cvs rdiff -u -r1.297 -r1.298 src/sys/kern/subr_pool.c
 cvs rdiff -u -r1.96 -r1.97 src/sys/sys/pool.h
 
 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.
 



Home | Main Index | Thread Index | Old Index