[sheepdog] [PATCH v3 0/4] sheepdev: linux kernel module of block device driver for sheepdog

levin li levin108 at gmail.com
Tue Jan 22 04:16:23 CET 2013


From: levin li <xingke.lwp at taobao.com>

v2 -- > v3:

1. Make it Ok for QEMU to run VDIs from the driver
2. Code refactor
3. Use the format 'del vdiname:snap_tag[snap_id]' to delete a device

v1 -- > v2:

1. Rename module.c to device.c
2. Split proc operations from device.c to proc.c
3. Remove sheepdog_proto.h from sheepdev, use the one in include directory
4. Supprt write snapshot VDI
5. Kill the compile error in linux kernel 3.7
6. Modify some functions's name

---------------------------------------------------------------------
This module provides function for users to take sheepdog VDIs as block
devices in linux, users can register a VDI to its kernel space, it just
like that a new hard disk is added to the computer, users can create
partitions for the disk, format the disk or mount the disk, it provides
users a efficient way to use sheepdog as distributed storage system.

The usage is easy, after install the module sheepdev.ko, it creates a proc
entry '/proc/entry', you can write into the proc entry file to control
the driver.

Add a new block device from an existing sheepdog VDI:

# echo "add 127.0.0.1:7070 linux" > /proc/sheep

Or we can use default port 7000:

# echo "add 127.0.0.1 linux" > /proc/sheep

It would create a block device /dev/sheepa, you can format/mount this device:

# mkfs.ext4 /dev/sheepa
# mount -t ext4 /sheep/sheepa test

Remove a block device from the kernel:

# echo "del linux" > /proc/sheep

It can also add a new device from a snapshot VDI, in witch case sheepdev
creates a new writable VDI from the snapshot

# echo "add 127.0.0.1:7070 linux:1" > /proc/sheep

Here linux:1 means the VDI with name 'linux' and snapshot id '1'

or 

# echo "add 127.0.0.1:7070 linux:snap" > /proc/sheep

Here linux:snap means the VDI with name 'linux' and snapshot tag 'snap'

If we don't specify snapshot id or snapshot tag, it means to use the
current VDI.


levin li (4):
  sheep: modify sheepdog_proto.h to make it usable in linux kernel
    module
  sheepdev: linux kernel module of block device driver for sheepdog
  sheepdev: make it safe to open a snapshot VDI
  sheepdev: add kbuild and Makefile.in

 Makefile.am              |   4 +
 configure.ac             |   9 +
 include/sheepdog_proto.h |  11 +-
 sheepdev/Kbuild          |  13 +
 sheepdev/Makefile.in     |   8 +
 sheepdev/connect.c       | 178 +++++++++
 sheepdev/device.c        | 985 +++++++++++++++++++++++++++++++++++++++++++++++
 sheepdev/proc.c          | 176 +++++++++
 sheepdev/sheep.c         | 246 ++++++++++++
 sheepdev/sheepdev.h      | 138 +++++++
 10 files changed, 1765 insertions(+), 3 deletions(-)
 create mode 100644 sheepdev/Kbuild
 create mode 100644 sheepdev/Makefile.in
 create mode 100644 sheepdev/connect.c
 create mode 100644 sheepdev/device.c
 create mode 100644 sheepdev/proc.c
 create mode 100644 sheepdev/sheep.c
 create mode 100644 sheepdev/sheepdev.h

-- 
1.7.11.7




More information about the sheepdog mailing list