Mailing List Archive

- Finer-grained asynchronous dispatch in parallax daemon.
ChangeSet 1.1473.1.1, 2005/05/20 15:49:37+01:00, akw27@arcadians.cl.cam.ac.uk

- Finer-grained asynchronous dispatch in parallax daemon.
- Cleanups and cull of older code.
- Fixes to handle changes in block protocol.

Signed-off-by: andrew.warfield@cl.cam.ac.uk



b/tools/blktap/Makefile | 51 --
b/tools/blktap/blkdump.c | 12
b/tools/blktap/block-async.c | 404 +++++++++++++++++++++++
b/tools/blktap/block-async.h | 69 +++
b/tools/blktap/blockstore.c | 7
b/tools/blktap/parallax-threaded.c | 34 -
b/tools/blktap/parallax.c | 275 ++++++++++-----
b/tools/blktap/radix.c | 417 -----------------------
b/tools/blktap/radix.h | 10
b/tools/blktap/requests-async.c | 629 +++++++++++++++++++++++++++++++++++
b/tools/blktap/requests-async.h | 19 +
b/tools/blktap/vdi.c | 25 +
b/tools/blktap/vdi.h | 10
tools/blktap/blkaio.c | 19 -
tools/blktap/blkaiolib.c | 489 ---------------------------
tools/blktap/blkaiolib.h | 16
tools/blktap/blkcow.c | 31 -
tools/blktap/blkcowgnbd.c | 24 -
tools/blktap/blkcowimg.c | 24 -
tools/blktap/blkcowlib.c | 380 ---------------------
tools/blktap/blkcowlib.h | 14
tools/blktap/blkgnbd.c | 19 -
tools/blktap/blkgnbdlib.c | 471 --------------------------
tools/blktap/blkgnbdlib.h | 16
tools/blktap/blkimg.c | 19 -
tools/blktap/blkimglib.c | 325 ------------------
tools/blktap/blkimglib.h | 16
tools/blktap/blockstore-tls.c | 161 ---------
tools/blktap/libgnbd/Makefile | 8
tools/blktap/libgnbd/gnbdtest.c | 90 -----
tools/blktap/libgnbd/libgnbd.c | 647 -------------------------------------
tools/blktap/libgnbd/libgnbd.h | 25 -
32 files changed, 1371 insertions(+), 3385 deletions(-)


diff -Nru a/tools/blktap/Makefile b/tools/blktap/Makefile
--- a/tools/blktap/Makefile 2005-05-20 12:02:03 -04:00
+++ b/tools/blktap/Makefile 2005-05-20 12:02:03 -04:00
@@ -22,12 +22,12 @@
PLX_SRCS += vdi.c
PLX_SRCS += radix.c
PLX_SRCS += snaplog.c
+PLX_SRCS += blockstore.c
+PLX_SRCS += block-async.c
PLXT_SRCS := $(PLX_SRCS)
-#PLXT_SRCS += blockstore-tls.c
-PLXT_SRCS += blockstore.c
PLXT_SRCS += parallax-threaded.c
-PLX_SRCS += blockstore.c
VDI_SRCS := $(PLX_SRCS)
+PLX_SRCS += requests-async.c
PLX_SRCS += parallax.c

VDI_TOOLS :=
@@ -55,10 +55,11 @@
DEPS = .*.d

OBJS = $(patsubst %.c,%.o,$(SRCS))
+IBINS = blkdump parallax $(VDI_TOOLS)

LIB = libblktap.so libblktap.so.$(MAJOR) libblktap.so.$(MAJOR).$(MINOR)

-all: mk-symlinks blkdump blkcow blkimg blkcowimg blkgnbd blkcowgnbd $(VDI_TOOLS) parallax parallax-threaded blockstored
+all: mk-symlinks blkdump $(VDI_TOOLS) parallax parallax-threaded blockstored
$(MAKE) $(LIB)

LINUX_ROOT := $(wildcard $(XEN_ROOT)/linux-2.6.*-xen-sparse)
@@ -77,10 +78,10 @@
$(INSTALL_DIR) -p $(DESTDIR)/usr/include
$(INSTALL_PROG) $(LIB) $(DESTDIR)/usr/$(LIBDIR)
$(INSTALL_PROG) blktaplib.h $(DESTDIR)/usr/include
- $(INSTALL_PROG) blkdump blkcow blkimg blkcowimg blkgnbd blkcowgnbd $(DESTDIR)/$(BLKTAP_INSTALL_DIR)
+ $(INSTALL_PROG) $(IBINS) $(DESTDIR)/$(BLKTAP_INSTALL_DIR)

clean:
- rm -rf *.a *.so *.o *.rpm $(LIB) *~ $(DEPS) xen TAGS blkdump blkcow blkimg blkcowimg blkgnbd blkcowgnbd blkaio $(VDI_TOOLS) parallax
+ rm -rf *.a *.so *.o *.rpm $(LIB) *~ $(DEPS) xen TAGS blkdump $(VDI_TOOLS) parallax parallax-threaded

rpm: all
rm -rf staging
@@ -101,32 +102,11 @@
blkdump: $(LIB)
$(CC) $(CFLAGS) -o blkdump -L$(XEN_LIBXC) -L$(XEN_LIBXUTIL) -L. -l blktap blkdump.c

-blkcowimg: $(LIB) blkcowimg.c blkcowlib.c blkimglib.c
- $(CC) $(CFLAGS) -o blkcowimg -ldb -L$(XEN_LIBXC) -L$(XEN_LIBXUTIL) -L. -l blktap blkcowimg.c blkimglib.c blkcowlib.c
-
-blkcow: $(LIB) blkcow.c blkcowlib.c
- $(CC) $(CFLAGS) -o blkcow -ldb -L$(XEN_LIBXC) -L$(XEN_LIBXUTIL) -L. -l blktap blkcow.c blkcowlib.c
-
-blkimg: $(LIB) blkimg.c blkimglib.c
- $(CC) $(CFLAGS) -o blkimg -L$(XEN_LIBXC) -L$(XEN_LIBXUTIL) -L. -l blktap blkimg.c blkimglib.c
-
-blkgnbd: $(LIB) blkgnbd.c blkgnbdlib.c
- $(CC) $(CFLAGS) -o blkgnbd -L$(XEN_LIBXC) -L$(XEN_LIBXUTIL) -L. -lblktap blkgnbd.c blkgnbdlib.c libgnbd/libgnbd.a
-
-blkcowgnbd: $(LIB) blkgnbd.c blkcowlib.c blkgnbdlib.c
- $(CC) $(CFLAGS) -o blkcowgnbd -ldb -L$(XEN_LIBXC) -L$(XEN_LIBXUTIL) -L. -lblktap blkcowgnbd.c blkgnbdlib.c blkcowlib.c libgnbd/libgnbd.a
-
-blkaio: $(LIB) blkaio.c blkaiolib.c
- $(CC) $(CFLAGS) -o blkaio -L$(XEN_LIBXC) -L$(XEN_LIBXUTIL) -L. -lblktap blkaio.c blkaiolib.c -laio -lpthread
-
parallax: $(LIB) $(PLX_SRCS)
- $(CC) $(CFLAGS) -o parallax -L$(XEN_LIBXC) -L$(XEN_LIBXUTIL) -L. -lblktap -lpthread $(PLX_SRCS) libgnbd/libgnbd.a
+ $(CC) $(CFLAGS) -o parallax -L$(XEN_LIBXC) -L$(XEN_LIBXUTIL) -L. -lblktap -lpthread $(PLX_SRCS)

parallax-threaded: $(LIB) $(PLXT_SRCS)
- $(CC) $(CFLAGS) -o parallax-threaded -L$(XEN_LIBXC) -L$(XEN_LIBXUTIL) -L. -lpthread -lblktap $(PLXT_SRCS) libgnbd/libgnbd.a
-
-vdi_test: $(LIB) $(VDI_SRCS)
- $(CC) $(CFLAGS) -g3 -o vdi_test -DVDI_STANDALONE -lpthread $(VDI_SRCS)
+ $(CC) $(CFLAGS) -o parallax-threaded -L$(XEN_LIBXC) -L$(XEN_LIBXUTIL) -L. -lpthread -lblktap $(PLXT_SRCS)

vdi_list: $(LIB) vdi_list.c $(VDI_SRCS)
$(CC) $(CFLAGS) -g3 -o vdi_list vdi_list.c -lpthread $(VDI_SRCS)
@@ -163,16 +143,3 @@

-include $(DEPS)

-#Random testing targets. To be removed eventually.
-
-rdx_cmp: $(LIB) rdx_cmp.c $(VDI_SRCS)
- $(CC) $(CFLAGS) -g3 -o rdx_cmp rdx_cmp.c $(VDI_SRCS)
-
-bb-tls: $(LIB) blockstore-benchmark.c
- $(CC) $(CFLAGS) -o bb-tls blockstore-benchmark.c blockstore-tls.c -lpthread
-
-bb-trans: $(LIB) blockstore-benchmark.c
- $(CC) $(CFLAGS) -o bb-trans blockstore-benchmark.c blockstore.c -lpthread
-
-radix-test: $(LIB) radix.c blockstore.c
- $(CC) $(CFLAGS) -g3 -D RADIX_STANDALONE -o radix-test radix.c blockstore-threaded-trans.c
diff -Nru a/tools/blktap/blkaio.c b/tools/blktap/blkaio.c
--- a/tools/blktap/blkaio.c 2005-05-20 12:02:03 -04:00
+++ /dev/null Wed Dec 31 16:00:00 196900
@@ -1,19 +0,0 @@
-/* blkaio.c
- *
- * libaio-backed disk.
- */
-
-#include "blktaplib.h"
-#include "blkaiolib.h"
-
-
-int main(int argc, char *argv[])
-{
- aio_init();
-
- blktap_register_ctrl_hook("aio_control", aio_control);
- blktap_register_request_hook("aio_request", aio_request);
- blktap_listen();
-
- return 0;
-}
diff -Nru a/tools/blktap/blkaiolib.c b/tools/blktap/blkaiolib.c
--- a/tools/blktap/blkaiolib.c 2005-05-20 12:02:03 -04:00
+++ /dev/null Wed Dec 31 16:00:00 196900
@@ -1,489 +0,0 @@
-/* blkaiolib.c
- *
- * file/device image-backed block device -- using linux libaio.
- *
- * (c) 2004 Andrew Warfield.
- *
- * Xend has been modified to use an amorfs:[fsid] disk tag.
- * This will show up as device type (maj:240,min:0) = 61440.
- *
- * The fsid is placed in the sec_start field of the disk extent.
- *
- * NOTE: This doesn't work. Grrr.
- */
-
-#define _GNU_SOURCE
-#define __USE_LARGEFILE64
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <string.h>
-#include <db.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <sys/poll.h>
-#include <unistd.h>
-#include <errno.h>
-#include <libaio.h>
-#include <pthread.h>
-#include <time.h>
-#include "blktaplib.h"
-
-//#define TMP_IMAGE_FILE_NAME "/dev/sda1"
-#define TMP_IMAGE_FILE_NAME "fc3.image"
-
-#define MAX_DOMS 1024
-#define MAX_IMGNAME_LEN 255
-#define AMORFS_DEV 61440
-#define MAX_REQUESTS 64 /* must be synced with the blkif drivers. */
-#define MAX_SEGMENTS_PER_REQ 11
-#define SECTOR_SHIFT 9
-#define MAX_AIO_REQS (MAX_REQUESTS * MAX_SEGMENTS_PER_REQ)
-
-#if 1
-#define DPRINTF(_f, _a...) printf ( _f , ## _a )
-#else
-#define DPRINTF(_f, _a...) ((void)0)
-#endif
-
-#if 1
-#define ASSERT(_p) \
- if ( !(_p) ) { printf("Assertion '%s' failed, line %d, file %s", #_p , \
- __LINE__, __FILE__); *(int*)0=0; }
-#else
-#define ASSERT(_p) ((void)0)
-#endif
-
-char dbg_page[4096];
-
-typedef struct {
- /* These need to turn into an array/rbtree for multi-disk support. */
- int fd;
- u64 fsid;
- char imgname[MAX_IMGNAME_LEN];
- blkif_vdev_t vdevice;
-} image_t;
-
-/* Note on pending_reqs: I assume all reqs are queued before they start to
- * get filled. so count of 0 is an unused record.
- */
-typedef struct {
- blkif_request_t req;
- int count;
-} pending_req_t;
-
-static pending_req_t pending_list[MAX_REQUESTS];
-image_t *images[MAX_DOMS];
-
-static io_context_t ctx;
-static struct iocb *iocb_free[MAX_AIO_REQS];
-static int iocb_free_count;
-
-/* ---[ Notification mecahnism ]--------------------------------------- */
-
-enum {
- READ = 0,
- WRITE = 1
-};
-
-static int aio_notify[2];
-static volatile int aio_listening = 0;
-
-static struct io_event aio_events[MAX_AIO_REQS];
-static int aio_event_count = 0;
-
-/* this is commented out in libaio.h for some reason. */
-extern int io_queue_wait(io_context_t ctx, struct timespec *timeout);
-
-static void *notifier_thread(void *arg)
-{
- int ret;
- int msg = 0x00feeb00;
-
- printf("Notifier thread started.\n");
- for (;;) {
- //if ((aio_listening) && ((ret = io_queue_wait(ctx, 0)) == 0)) {
- if ((aio_listening) &&
- ((ret = io_getevents(ctx, 1, MAX_AIO_REQS, aio_events, 0)) > 0)) {
- aio_event_count = ret;
- printf("[Notifying! (%d)]\n", aio_event_count);
- aio_listening = 0;
- write(aio_notify[WRITE], &msg, sizeof(msg));
- fsync(aio_notify[WRITE]);
- } else {
- if (aio_listening)
- printf("[io_queue_wait error! %d]\n", errno);
- usleep(1000); /* Not ready to read. */
- }
- }
-}
-
-/* -------------------------------------------------------------------- */
-
-int aio_control(control_msg_t *msg)
-{
- domid_t domid;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@lists.xensource.com
http://lists.xensource.com/xen-changelog