Skip to content
  • Tobin C. Harding's avatar
    a16b5384
    list: add function list_rotate_to_front() · a16b5384
    Tobin C. Harding authored
    Patch series "mm: Use slab_list list_head instead of lru", v5.
    
    Currently the slab allocators (ab)use the struct page 'lru' list_head.  We
    have a list head for slab allocators to use, 'slab_list'.
    
    During v2 it was noted by Christoph that the SLOB allocator was reaching
    into a list_head, this version adds 2 patches to the front of the set to
    fix that.
    
    Clean up all three allocators by using the 'slab_list' list_head instead
    of overloading the 'lru' list_head.
    
    This patch (of 7):
    
    Currently if we wish to rotate a list until a specific item is at the
    front of the list we can call list_move_tail(head, list).  Note that the
    arguments are the reverse way to the usual use of list_move_tail(list,
    head).  This is a hack, it depends on the developer knowing how the
    list_head operates internally which violates the layer of abstraction
    offered by the list_head.  Also, it is not intuitive so the next developer
    to come along must study list.h in order to fully understand what is meant
    by the call, while this is 'good for' the developer it makes reading the
    code harder.  We should have an function appropriately named that does
    this if there are users for it intree.
    
    By grep'ing the tree for list_move_tail() and list_tail() and attempting
    to guess the argument order from the names it seems there is only one
    place currently in the tree that does this - the slob allocatator.
    
    Add function list_rotate_to_front() to rotate a list until the specified
    item is at the front of the list.
    
    Link: http://lkml.kernel.org/r/20190402230545.2929-2-tobin@kernel.org
    
    
    Signed-off-by: default avatarTobin C. Harding <tobin@kernel.org>
    Reviewed-by: default avatarChristoph Lameter <cl@linux.com>
    Reviewed-by: default avatarRoman Gushchin <guro@fb.com>
    Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    a16b5384
    list: add function list_rotate_to_front()
    Tobin C. Harding authored
    Patch series "mm: Use slab_list list_head instead of lru", v5.
    
    Currently the slab allocators (ab)use the struct page 'lru' list_head.  We
    have a list head for slab allocators to use, 'slab_list'.
    
    During v2 it was noted by Christoph that the SLOB allocator was reaching
    into a list_head, this version adds 2 patches to the front of the set to
    fix that.
    
    Clean up all three allocators by using the 'slab_list' list_head instead
    of overloading the 'lru' list_head.
    
    This patch (of 7):
    
    Currently if we wish to rotate a list until a specific item is at the
    front of the list we can call list_move_tail(head, list).  Note that the
    arguments are the reverse way to the usual use of list_move_tail(list,
    head).  This is a hack, it depends on the developer knowing how the
    list_head operates internally which violates the layer of abstraction
    offered by the list_head.  Also, it is not intuitive so the next developer
    to come along must study list.h in order to fully understand what is meant
    by the call, while this is 'good for' the developer it makes reading the
    code harder.  We should have an function appropriately named that does
    this if there are users for it intree.
    
    By grep'ing the tree for list_move_tail() and list_tail() and attempting
    to guess the argument order from the names it seems there is only one
    place currently in the tree that does this - the slob allocatator.
    
    Add function list_rotate_to_front() to rotate a list until the specified
    item is at the front of the list.
    
    Link: http://lkml.kernel.org/r/20190402230545.2929-2-tobin@kernel.org
    
    
    Signed-off-by: default avatarTobin C. Harding <tobin@kernel.org>
    Reviewed-by: default avatarChristoph Lameter <cl@linux.com>
    Reviewed-by: default avatarRoman Gushchin <guro@fb.com>
    Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
Loading