v2 --> v3:
1. Use the lockless mode to fill the pool.
v1 --> v2:
1. Fix the compilation attributes of some global variables
2. Update comments and commit messages.
v1:
The summary changes of the first two patches is as follows:
if (likely(READ_ONCE(obj_pool_free) >= debug_objects_pool_min_level))
return;
- while (READ_ONCE(obj_nr_tofree) && (READ_ONCE(obj_pool_free) < obj_pool_min_free)) {
+ if (READ_ONCE(obj_nr_tofree)) {
raw_spin_lock_irqsave(&pool_lock, flags);
- while (obj_nr_tofree && (obj_pool_free < obj_pool_min_free)) {
+ while (obj_nr_tofree && (obj_pool_free < debug_objects_pool_min_level)) {
... ...
}
raw_spin_unlock_irqrestore(&pool_lock, flags);
Zhen Lei (3):
debugobjects: Delete a piece of redundant code
debugobjects: Use hlist_splice_init() to reduce lock conflicts
debugobjects: Reduce contention on pool lock in fill_pool()
lib/debugobjects.c | 105 ++++++++++++++++++++++++++++++---------------
1 file changed, 70 insertions(+), 35 deletions(-)
--
2.34.1