• Dan Magenheimer's avatar
    staging: ramster: ramster-specific changes to zcache/tmem · c89126ea
    Dan Magenheimer authored
    RAMster implements peer-to-peer transcendent memory, allowing a "cluster"
    of kernels to dynamically pool their RAM.
    
    This patch incorporates changes transforming zcache to work with
    a remote store.
    
    In tmem.[ch], new "repatriate" (provoke async get) and "localify" (handle
    incoming data resulting from an async get) routines combine with a handful
    of changes to existing pamops interfaces allow the generic tmem code
    to support asynchronous operations.  Also, a new tmem_xhandle struct
    groups together key information that must be passed to remote tmem stores.
    
    Zcache-main.c is augmented with a large amount of ramster-specific code
    to handle remote operations and "foreign" pages on both ends of the
    "remotify" protocol.  New "foreign" pools are auto-created on demand.
    A "selfshrinker" thread periodically repatriates remote persistent pages
    when local memory conditions allow.  For certain operations, a queue is
    necessary to guarantee strict ordering as out-of-order puts/flushes can
    cause strange race conditions.  Pampd pointers now either point to local
    memory OR describe a remote page; to allow the same 64-bits to describe
    either, the LSB is used to differentiate.  Some acrobatics must be performed
    to ensure local memory is available to handle a remote persistent get,
    or deal with the data directly anyway if the malloc failed.  Lots
    of ramster-specific statistics are available via sysfs.
    
    Note: Some debug ifdefs left in for now.
    Signed-off-by: default avatarDan Magenheimer <dan.magenheimer@oracle.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    c89126ea
Makefile 74 Bytes