Reviewed-by: Robin Dong <san...@taobao.com>
2014-05-26 14:52 GMT+08:00 Liu Yuan <namei.u...@gmail.com>: > v4: > - fix slab create and destroy > > v3: > - kill SPINLOCK macro hack by not using 'gnu99' > - make this module compile with 2.6.32 series kernel (centos 6) > > v2: > - enhance memory allocation when near out of memory of system > - add slab allocator > - use vmalloc for aiocb->buf to avoid memory allocation failure > > This is similar to Ceph's RBD. The main motivation is to replace complex > and ineffecient middle ware (such as iscsi softwafe) with simple software > stacks > to expose sheepdog storage as Linux block device interface, which means > that we > can make use of page cache as a client cache for buffered read/write > optionally > and behaves as a normal Linux block device(s) in your local file system. > > I implement a high performance(hopefully) aio framework for > sending/recving data > and compared with iscsi tgt or sheepfs, this kernel module should provide > much > better performance because of shortest code path. > > With single major allocation scheme, we support 31 partitions for a sheep > block > device at most and 32768 devices can be attached to local fs for a single > node. > > TODO > - support cloned sheep vdi > - auto-reconncect to sheep daemon if connection is off/crashed > - better error handling > - block device multi-queue support for recent kernel > - live snapshot of sbd > - support hyper volume > > You can access this patch set at origin/sbd. > $ git pull; > $ git checkout -b sbd origin/sbd > > To complile: > $ cd shepdog/sbd/;make > $ insmod sbd.ko > > Usage: > > We control the device the same way as RBD. > > # associate vdi 'test' to /dev/sbd0 > $ echo 127.0.0.1 7000 test > /sys/bus/sbd/add > > # remove the device sbd0 > $ echo 0 > /sys/bus/sbd/remove > > # list the mapped devices > $ cat /sys/buf/sbd/list > > To get best of performance, > > # echo 4096 > /sys/block/sbd0/queue/max_sectors_kb > > Which means io scheduler will try its best to handle us 4MB request. > Liu Yuan (9): > sheep: some macro preparation for sbd kernem modual > sbd: introduce basic framework for Sheepdog Block Device > sbd: implement write operation > sbd: implement read operation > sbd: add list interface to control file > sbd: add support for single major allocation scheme > sbd: some error handling refinements > sbd: improve memory allocation when memory hit low > sbd: use kmem_cache for sheep aiocb and request > > include/sheepdog_proto.h | 22 +- > sbd/Kbuild | 5 + > sbd/Makefile | 8 + > sbd/sbd.h | 143 ++++++++++ > sbd/sheep.c | 680 > +++++++++++++++++++++++++++++++++++++++++++++++ > sbd/sheep_block_device.c | 424 +++++++++++++++++++++++++++++ > 6 files changed, 1275 insertions(+), 7 deletions(-) > create mode 100644 sbd/Kbuild > create mode 100644 sbd/Makefile > create mode 100644 sbd/sbd.h > create mode 100644 sbd/sheep.c > create mode 100644 sbd/sheep_block_device.c > > -- > 1.8.1.2 > > -- > sheepdog mailing list > sheepdog@lists.wpkg.org > http://lists.wpkg.org/mailman/listinfo/sheepdog > -- -- Best Regard Robin Dong
-- sheepdog mailing list sheepdog@lists.wpkg.org http://lists.wpkg.org/mailman/listinfo/sheepdog