[sheepdog] [PATCH v4 RESEND 0/8] sheepdev: linux kernel module of block device driver for sheepdog
levin li
levin108 at gmail.com
Wed Jan 23 09:16:09 CET 2013
From: levin li <xingke.lwp at taobao.com>
v3 -- > v4:
1. Refactor the code in proc.c and device.c
2. Split the big patch into some small patches
3. Fixed coding style to pass checkpatch.pl check
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 (8):
sheep: modify sheepdog_proto.h to make it usable in linux kernel
module
sheepdev: use proc entry to control adding/removing devices
sheepdev: add connect.c for network operations
sheepdev: add sheep.c to process the sheepdog protocol
sheepdev: make it possible to add or remove a sheep device
sheepdev: create kernel threads to process the IO request in the
driver
sheepdev: make it safe to open a snapshot VDI
sheepdev: add Makefile.in and modify configure.ac to adopt sheepdev
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 | 996 +++++++++++++++++++++++++++++++++++++++++++++++
sheepdev/proc.c | 148 +++++++
sheepdev/sheep.c | 246 ++++++++++++
sheepdev/sheepdev.h | 138 +++++++
10 files changed, 1748 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