• Chris Mason's avatar
    RDS/IB: Add caching of frags and incs · 33244125
    Chris Mason authored
    This patch is based heavily on an initial patch by Chris Mason.
    Instead of freeing slab memory and pages, it keeps them, and
    funnels them back to be reused.
    
    The lock minimization strategy uses xchg and cmpxchg atomic ops
    for manipulation of pointers to list heads. We anchor the lists with a
    pointer to a list_head struct instead of a static list_head struct.
    We just have to carefully use the existing primitives with
    the difference between a pointer and a static head struct.
    
    For example, 'list_empty()' means that our anchor pointer points to a list with
    a single item instead of meaning that our static head element doesn't point to
    any list items.
    
    Original patch by Chris, with significant mods and fixes by Andy and Zach.
    Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
    Signed-off-by: default avatarAndy Grover <andy.grover@oracle.com>
    Signed-off-by: default avatarZach Brown <zach.brown@oracle.com>
    33244125
ib.h 11.8 KB