(Refactored) provide vhd support to blktap
PATCH 2/4 (Refactored) provide vhd support to blktap
[PATCH 2/4] (Refactored) provide vhd support to blktap tapdisk-vhd-support.patch
Provides integration of vdisk library, and implementation of block-vhd into blktap
Signed-off-by Boris Ostrovsky <[email protected]>
Signed-off-by Ben Guthro <[email protected]>
tools/blktap/drivers/Makefile +8 -5
@@ -7,12 +7,14 @@ QCOW_UTIL = img2qcow qcow2raw qcow-cr QCOW_UTIL = img2qcow qcow2raw qcow-create INST_DIR = /usr/sbin LIBAIO_DIR = ../../libaio/src +LIBVDISK_DIR = ../../vdisk +LIBSDIR = lib64 CFLAGS += -Werror CFLAGS += -Wno-unused CFLAGS += -fno-strict-aliasing CFLAGS += -I $(XEN_LIBXC) -I $(LIBAIO_DIR) -CFLAGS += $(INCLUDES) -I. -I../../xenstore +CFLAGS += $(INCLUDES) -I. -I../../xenstore -I$(LIBVDISK_DIR) CFLAGS += -D_GNU_SOURCE # Get gcc to generate the dependencies for us.
@@ -21,10 +23,10 @@ DEPS = .*.d THREADLIB := -lpthread -lz LIBS := -L. -L.. -L../lib -LIBS += -L$(XEN_LIBXC) +LIBS += -L$(XEN_LIBXC) -L$(LIBVDISK_DIR) -L$(LIBAIO_DIR) LIBS += -lblktap -lxenctrl LIBS += -lcrypto -LIBS += -lz +LIBS += -lz -lvdisk -laio LIBS += -L$(XEN_XENSTORE) -lxenstore AIOLIBS := $(LIBAIO_DIR)/libaio.a
@@ -34,15 +36,16 @@ BLK-OBJS += block-vmdk.o BLK-OBJS += block-vmdk.o BLK-OBJS += block-ram.o BLK-OBJS += block-qcow.o +BLK-OBJS += block-vhd.o BLK-OBJS += aes.o BLK-OBJS += tapaio.o all: $(IBIN) qcow-util -blktapctrl: blktapctrl.c +blktapctrl: blktapctrl.c tapdisk.h $(CC) $(CFLAGS) -o blktapctrl $(LIBS) blktapctrl.c -tapdisk: $(BLK-OBJS) tapdisk.c +tapdisk: $(BLK-OBJS) tapdisk.c tapdisk.h $(CC) $(CFLAGS) -o tapdisk $(BLK-OBJS) tapdisk.c \ $(AIOLIBS) $(LIBS)
tools/blktap/drivers/block-vhd.c new file +344 -0
344 lines not on this page · raw message
tools/blktap/drivers/tapdisk.c +11 -4
@@ -556,15 +556,22 @@ int send_responses(struct disk_driver *d preq = &blkif->pending_list[idx]; req = &preq->req; -if (res ==BLK_NOT_ALLOCATED ) { - res =do_cow_read (dd, req, sidx, sector, nr_secs); +if (res ==BLK_NOT_ALLOCATED ) { +#if 1 +/* VHD - do not support */ +DPRINTF ("invalid for VHD's\n" ); +return 0 ; +#else +/* Original xen code */ + res =do_cow_read (dd, req, sidx, sector, nr_secs);if (res >=0 ) { secs_done = res; res =0 ; }else secs_done =0 ; - } - +#endif + } + preq->secs_pending -= secs_done;if (res == -EBUSY && preq->submitting)
tools/blktap/drivers/tapdisk.h +13 -0
@@ -156,6 +156,7 @@ extern struct tap_disk tapdisk_vmdk;extern struct tap_disk tapdisk_vmdk;extern struct tap_disk tapdisk_ram;extern struct tap_disk tapdisk_qcow; +extern struct tap_disk tapdisk_vhd;#define MAX_DISK_TYPES 20
@@ -164,6 +165,7 @@ extern struct tap_disk tapdisk_qcow;#define DISK_TYPE_VMDK 2#define DISK_TYPE_RAM 3#define DISK_TYPE_QCOW 4 +#define DISK_TYPE_VHD 5/*Define Individual Disk Parameters here */
@@ -214,6 +216,16 @@ static disk_info_t qcow_disk = {0 , #ifdef TAPDISK &tapdisk_qcow, +#endif +}; + +static disk_info_t vhd_disk = { +DISK_TYPE_VHD , +"VHD disk (vhd)" , +"vhd" , +1 , +#ifdef TAPDISK + &tapdisk_vhd, #endif };
@@ -224,6 +236,7 @@ static disk_info_t *dtypes[] = { &vmdk_disk, &ram_disk, &qcow_disk, + &vhd_disk, }; typedef struct driver_list_entry {
_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel