1. 15 Feb, 2012 5 commits
    • 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
    • Dan Magenheimer's avatar
      staging: ramster: xvmalloc allocation files · b95e141a
      Dan Magenheimer authored
      RAMster implements peer-to-peer transcendent memory, allowing a "cluster"
      of kernels to dynamically pool their RAM.
      
      Zcache is in the process of converting allocators, from xvmalloc to zsmalloc.
      Further, RAMster V5 testing to date has been done only with xvmalloc.
      To avoid merging problems, a linux-3.2 copy of xvmalloc is incorporated by
      this patch.  Later patches will be able to eliminate xvmalloc and use zsmalloc.
      Signed-off-by: default avatarDan Magenheimer <dan.magenheimer@oracle.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b95e141a
    • Dan Magenheimer's avatar
      staging: ramster: local compression + tmem · 19ee3ef5
      Dan Magenheimer authored
      RAMster implements peer-to-peer transcendent memory, allowing a "cluster"
      of kernels to dynamically pool their RAM.
      
      This patch copies files from drivers/staging/zcache.  RAMster compresses
      pages locally before transmitting them to another node, so we can
      leverage the zcache and tmem code directly.  Note: there are
      no ramster-specific changes yet to these files.
      
      (Why copy?  The ramster tmem.c/tmem.h changes are definitely shareable
      between zcache and ramster; the eventual destination for tmem.c
      is the linux lib directory.  Ramster changes to zcache are more substantial
      and zcache is currently undergoing some significant unrelated changes
      (including a new allocator and breaking zcache-main.c into smaller files),
      so it seemed best to branch temporarily and merge later.)
      Signed-off-by: default avatarDan Magenheimer <dan.magenheimer@oracle.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      19ee3ef5
    • Dan Magenheimer's avatar
      staging: ramster: cluster/messaging foundation · b605c962
      Dan Magenheimer authored
      RAMster implements peer-to-peer transcendent memory, allowing a "cluster"
      of kernels to dynamically pool their RAM.
      
      This patch provides the cluster and messaging foundation for RAMster,
      implementing the basic cluster discovery, mapping, heartbeat / keepalive,
      and messaging ("r2net") that RAMster requires for internode communication.
      This code heavily leverages code from the ocfs2 cluster layer but
      has been extended, interfaces to userland changed, and external functions
      renamed so that RAMster and ocfs2 can co-exist in the kernel and userland.
      Signed-off-by: default avatarDan Magenheimer <dan.magenheimer@oracle.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b605c962
    • Dan Magenheimer's avatar
      staging: ramster: enable as staging driver · 9a68e9a4
      Dan Magenheimer authored
      RAMster implements peer-to-peer transcendent memory, allowing a "cluster"
      of kernels to dynamically pool their RAM.
      
      Enable build of ramster as a staging driver
      Signed-off-by: default avatarDan Magenheimer <dan.magenheimer@oracle.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      9a68e9a4
  2. 14 Feb, 2012 14 commits
  3. 13 Feb, 2012 3 commits
  4. 10 Feb, 2012 18 commits