Skip to content
  • Seth Jennings's avatar
    zbud: add to mm/ · 4e2e2770
    Seth Jennings authored
    
    
    zbud is an special purpose allocator for storing compressed pages.  It
    is designed to store up to two compressed pages per physical page.
    While this design limits storage density, it has simple and
    deterministic reclaim properties that make it preferable to a higher
    density approach when reclaim will be used.
    
    zbud works by storing compressed pages, or "zpages", together in pairs
    in a single memory page called a "zbud page".  The first buddy is "left
    justifed" at the beginning of the zbud page, and the last buddy is
    "right justified" at the end of the zbud page.  The benefit is that if
    either buddy is freed, the freed buddy space, coalesced with whatever
    slack space that existed between the buddies, results in the largest
    possible free region within the zbud page.
    
    zbud also provides an attractive lower bound on density.  The ratio of
    zpages to zbud pages can not be less than 1.  This ensures that zbud can
    never "do harm" by using more pages to store zpages than the
    uncompressed zpages would have used on their own.
    
    This implementation is a rewrite of the zbud allocator internally used
    by zcache in the driver/staging tree.  The rewrite was necessary to
    remove some of the zcache specific elements that were ingrained
    throughout and provide a generic allocation interface that can later be
    used by zsmalloc and others.
    
    This patch adds zbud to mm/ for later use by zswap.
    
    Signed-off-by: default avatarSeth Jennings <sjenning@linux.vnet.ibm.com>
    Acked-by: default avatarRik van Riel <riel@redhat.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Nitin Gupta <ngupta@vflare.org>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: Dan Magenheimer <dan.magenheimer@oracle.com>
    Cc: Robert Jennings <rcj@linux.vnet.ibm.com>
    Cc: Jenifer Hopper <jhopper@us.ibm.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Johannes Weiner <jweiner@redhat.com>
    Cc: Larry Woodman <lwoodman@redhat.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Dave Hansen <dave@sr71.net>
    Cc: Joe Perches <joe@perches.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Cody P Schafer <cody@linux.vnet.ibm.com>
    Cc: Hugh Dickens <hughd@google.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Bob Liu <bob.liu@oracle.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    4e2e2770