[lkml]   [2011]   [Jul]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Subject[PATCH RFCv2 0/8] sched: Enforce order of leaf CFS runqueues (and list cleanup)
Code review showed, that the hierarchical order of the leaf
CFS runqueues introduced by commit 67e8625 ("sched: Introduce
hierarchal order on shares update list") is not yet achieved.
(See description of third patch for an example.)

During the discussion of possible solutions [1], Paul Turner
mentioned an "ideal approach" to solve that.

This is the second iteration of the patch-set that tries to
realize this "ideal" approach.

The first iteration got some positive feedback from Paul E. McKenney
regarding its "advanced" RCU usage. His negative feedback -- missing
comments -- should be addressed, now.

Changes since v1:
- rebased against v3.0
- included follow-up patches 4 to 8 (demonstrating the purpose of patch 1)
- patch 1 should be complete this time
- moved more functionality to rculist.h (see patch 2+3)
- more comments everywhere

Patch 1: After inventing __list_link(), I realized, that this
function already existed, but with a different name.

This patch just does some renaming. Not really needed,
but if I use the old naming in patch 2 it's really
hard to understand what's actually going on.

It also helps to increase the readability of the existing
code, see patches 6-8.

Patch 2: This introduces new list functions to splice RCU lists
and handle deleted RCU list entries.

Patch 3: The actual bugfix.

Patch 4+5: Follow-ups to patch 1. Some more renaming and use of
appropriate functions.

Patch 6: Another follow-up to patch 1, improving the readability of
the list routines a bit.

Patch 7+8: Follow-ups to patch 2. Make use of the introduced
functionality in the already existing code.




Jan H. Schönherr (8):
list, treewide: Rename __list_del() to __list_link()
rcu: More rcu-variants for list manipulation
sched: Handle on_list ancestor in list_add_leaf_cfs_rq()
list, treewide: Rename __list_del_entry() to __list_del()
treewide: Use __list_del() instead of __list_link()
list: Make use of __list_link()
rcu: Make use of __list_link() and __list_link_rcu()
rcu: Rewrite and rename list_splice_init_rcu()

drivers/char/ipmi/ipmi_msghandler.c | 2 +-
drivers/firewire/core-topology.c | 2 +-
drivers/gpu/drm/ttm/ttm_page_alloc.c | 4 +-
fs/btrfs/volumes.c | 2 +-
include/linux/list.h | 80 ++++++++----------
include/linux/rculist.h | 155 +++++++++++++++++++++++++++++----
kernel/mutex.h | 2 +-
kernel/sched_fair.c | 93 ++++++++++++++++-----
kernel/timer.c | 2 +-
lib/list_debug.c | 8 +-
net/ipv4/cipso_ipv4.c | 2 +-
11 files changed, 257 insertions(+), 95 deletions(-)


To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2011-07-27 21:13    [W:0.098 / U:19.036 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site