Skip to contentSkip to conversation

provide vhd support to blktap

PATCH In review Ben Guthro 1 participant 1 message Jun 19, 2007

lore
Share & tools
lore

Ben Guthro

author
#0 lore raw

PATCH 2/4 provide vhd support to blktap

[PATCH 2/4] provide vhd support to blktap tapdisk-vhd-support.patch
Provides integration of vdisk library, and implementation of block-vhd into blktap

tools/blktap/drivers/Makefile +8 -5
diff -r 92f2f05d6839 tools/blktap/drivers/Makefile
@@ -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,14 +36,15 @@ 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
 
 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 +312 -0

312 lines not on this page · raw message

tools/blktap/drivers/tapdisk.c +11 -4
diff -r 92f2f05d6839 tools/blktap/drivers/tapdisk.c
@@ -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
diff -r 92f2f05d6839 tools/blktap/drivers/tapdisk.h
@@ -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