aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-01-12 07:01:21 +0000
committerKeir Fraser <keir.fraser@citrix.com>2010-01-12 07:01:21 +0000
commit60e8e9aabcca4188e5ad2d0b5c8a448bd0c4437e (patch)
tree82019c4d2c4765199242e8143f414e6d51c9e1b0 /tools
parentb57e4ee13e4b950ca5d75db23eb19789f19220d3 (diff)
downloadxen-60e8e9aabcca4188e5ad2d0b5c8a448bd0c4437e.tar.gz
xen-60e8e9aabcca4188e5ad2d0b5c8a448bd0c4437e.tar.bz2
xen-60e8e9aabcca4188e5ad2d0b5c8a448bd0c4437e.zip
blktap: make memshr optional
Attached patch makes memshr optional for blktap/blktap2. This fixes build for platforms where memshr isn't build on. While there, make indentation consistent. Signed-off-by: Christoph Egger <Christoph.Egger@amd.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/blktap/drivers/Makefile8
-rw-r--r--tools/blktap/drivers/blktapctrl.c4
-rw-r--r--tools/blktap2/drivers/Makefile8
-rw-r--r--tools/blktap2/drivers/tapdisk-image.c10
-rw-r--r--tools/blktap2/drivers/tapdisk-vbd.c78
-rw-r--r--tools/blktap2/drivers/tapdisk.h4
-rw-r--r--tools/blktap2/drivers/tapdisk2.c15
7 files changed, 82 insertions, 45 deletions
diff --git a/tools/blktap/drivers/Makefile b/tools/blktap/drivers/Makefile
index b7e392b3d8..ed6fcbe6f7 100644
--- a/tools/blktap/drivers/Makefile
+++ b/tools/blktap/drivers/Makefile
@@ -23,7 +23,13 @@ CRYPT_LIB := -lcrypto
$(warning === libgcrypt not installed: falling back to libcrypto ===)
endif
-LDFLAGS_blktapctrl := $(LDFLAGS_libxenctrl) $(LDFLAGS_libxenstore) $(MEMSHR_DIR)/libmemshr.a -L../lib -lblktap -lrt -lm
+MEMSHRLIBS :=
+ifeq ($(CONFIG_Linux), y)
+CFLAGS += -DMEMSHR
+MEMSHRLIBS += $(MEMSHR_DIR)/libmemshr.a
+endif
+
+LDFLAGS_blktapctrl := $(LDFLAGS_libxenctrl) $(LDFLAGS_libxenstore) $(MEMSHRLIBS) -L../lib -lblktap -lrt -lm
LDFLAGS_img := $(LIBAIO_DIR)/libaio.a $(CRYPT_LIB) -lpthread -lz
BLK-OBJS-y := block-aio.o
diff --git a/tools/blktap/drivers/blktapctrl.c b/tools/blktap/drivers/blktapctrl.c
index b5ebfee62e..d1bc79f303 100644
--- a/tools/blktap/drivers/blktapctrl.c
+++ b/tools/blktap/drivers/blktapctrl.c
@@ -859,7 +859,9 @@ int main(int argc, char *argv[])
goto open_failed;
}
- memshr_daemon_initialize();
+#ifdef MEMSHR
+ memshr_daemon_initialize();
+#endif
retry:
/* Set up store connection and watch. */
diff --git a/tools/blktap2/drivers/Makefile b/tools/blktap2/drivers/Makefile
index b70ca7ddc0..2fb2f2b887 100644
--- a/tools/blktap2/drivers/Makefile
+++ b/tools/blktap2/drivers/Makefile
@@ -55,7 +55,13 @@ $(REMUS-OBJS): CFLAGS += -I$(XEN_XENSTORE)
LIBAIO_DIR = $(XEN_ROOT)/tools/libaio/src
MEMSHR_DIR = $(XEN_ROOT)/tools/memshr
-MEMSHRLIBS := $(MEMSHR_DIR)/libmemshr.a
+
+MEMSHRLIBS :=
+ifeq ($(CONFIG_Linux), y)
+CFLAGS += -DMEMSHR
+MEMSHRLIBS += $(MEMSHR_DIR)/libmemshr.a
+endif
+
tapdisk2 tapdisk-stream tapdisk-diff $(QCOW_UTIL): AIOLIBS := $(LIBAIO_DIR)/libaio.a
tapdisk-client tapdisk-stream tapdisk-diff $(QCOW_UTIL): CFLAGS += -I$(LIBAIO_DIR) -I$(XEN_LIBXC)
diff --git a/tools/blktap2/drivers/tapdisk-image.c b/tools/blktap2/drivers/tapdisk-image.c
index 400c467583..2193ceddc6 100644
--- a/tools/blktap2/drivers/tapdisk-image.c
+++ b/tools/blktap2/drivers/tapdisk-image.c
@@ -28,7 +28,9 @@
#include <errno.h>
#include <unistd.h>
#include <stdlib.h>
+#ifdef MEMSHR
#include <memshr.h>
+#endif
#include "tapdisk-image.h"
#include "tapdisk-driver.h"
@@ -57,7 +59,9 @@ tapdisk_image_allocate(char *file, int type, int storage,
image->flags = flags;
image->storage = storage;
image->private = private;
- image->memshr_id = memshr_vbd_image_get(file);
+#ifdef MEMSHR
+ image->memshr_id = memshr_vbd_image_get(file);
+#endif
INIT_LIST_HEAD(&image->next);
return image;
@@ -71,7 +75,9 @@ tapdisk_image_free(td_image_t *image)
list_del(&image->next);
- memshr_vbd_image_put(image->memshr_id);
+#ifdef MEMSHR
+ memshr_vbd_image_put(image->memshr_id);
+#endif
free(image->name);
tapdisk_driver_free(image->driver);
free(image);
diff --git a/tools/blktap2/drivers/tapdisk-vbd.c b/tools/blktap2/drivers/tapdisk-vbd.c
index 14507b3830..e9db1d61a6 100644
--- a/tools/blktap2/drivers/tapdisk-vbd.c
+++ b/tools/blktap2/drivers/tapdisk-vbd.c
@@ -34,7 +34,9 @@
#include <libgen.h>
#include <sys/mman.h>
#include <sys/ioctl.h>
+#ifdef MEMSHR
#include <memshr.h>
+#endif
#include "libvhd.h"
#include "tapdisk-image.h"
@@ -107,7 +109,9 @@ tapdisk_vbd_initialize(int rfd, int wfd, uint16_t uuid)
vbd->callback = tapdisk_vbd_callback;
vbd->argument = vbd;
- memshr_vbd_initialize();
+#ifdef MEMSHR
+ memshr_vbd_initialize();
+#endif
INIT_LIST_HEAD(&vbd->driver_stack);
INIT_LIST_HEAD(&vbd->images);
@@ -1455,18 +1459,23 @@ __tapdisk_vbd_complete_td_request(td_vbd_t *vbd, td_vbd_request_t *vreq,
(treq.op == TD_OP_WRITE ? "write" : "read"),
treq.secs, treq.sec);
}
- } else
- if(treq.op == TD_OP_READ && td_flag_test(image->flags, TD_OPEN_RDONLY)) {
- uint64_t hnd = treq.memshr_hnd;
- uint16_t uid = image->memshr_id;
- blkif_request_t *breq = &vreq->req;
- uint64_t sec = tapdisk_vbd_breq_get_sector(breq, treq);
- int secs = breq->seg[treq.sidx].last_sect -
- breq->seg[treq.sidx].first_sect + 1;
-
- if(hnd != 0)
- memshr_vbd_complete_ro_request(hnd, uid, sec, secs);
- }
+ } else {
+#ifdef MEMSHR
+ if (treq.op == TD_OP_READ
+ && td_flag_test(image->flags, TD_OPEN_RDONLY)) {
+ uint64_t hnd = treq.memshr_hnd;
+ uint16_t uid = image->memshr_id;
+ blkif_request_t *breq = &vreq->req;
+ uint64_t sec = tapdisk_vbd_breq_get_sector(breq, treq);
+ int secs = breq->seg[treq.sidx].last_sect -
+ breq->seg[treq.sidx].first_sect + 1;
+
+ if (hnd != 0)
+ memshr_vbd_complete_ro_request(hnd, uid,
+ sec, secs);
+ }
+#endif
+ }
tapdisk_vbd_complete_vbd_request(vbd, vreq);
}
@@ -1518,29 +1527,28 @@ __tapdisk_vbd_reissue_td_request(td_vbd_t *vbd,
break;
case TD_OP_READ:
- if(td_flag_test(parent->flags, TD_OPEN_RDONLY))
- {
- int ret, seg = treq.sidx;
- blkif_request_t *breq = &vreq->req;
+#ifdef MEMSHR
+ if(td_flag_test(parent->flags, TD_OPEN_RDONLY)) {
+ int ret, seg = treq.sidx;
+ blkif_request_t *breq = &vreq->req;
- ret = memshr_vbd_issue_ro_request(treq.buf,
- breq->seg[seg].gref,
- parent->memshr_id,
- treq.sec,
- treq.secs,
- &treq.memshr_hnd);
- if(ret == 0)
- {
- /* Reset memshr handle. This'll prevent
- * memshr_vbd_complete_ro_request being called */
- treq.memshr_hnd = 0;
- td_complete_request(treq, 0);
- }
- else
- td_queue_read(parent, treq);
- }
- else
- td_queue_read(parent, treq);
+ ret = memshr_vbd_issue_ro_request(treq.buf,
+ breq->seg[seg].gref,
+ parent->memshr_id,
+ treq.sec,
+ treq.secs,
+ &treq.memshr_hnd);
+ if(ret == 0) {
+ /* Reset memshr handle. This'll prevent
+ * memshr_vbd_complete_ro_request being called
+ */
+ treq.memshr_hnd = 0;
+ td_complete_request(treq, 0);
+ } else
+ td_queue_read(parent, treq);
+ } else
+#endif
+ td_queue_read(parent, treq);
break;
}
diff --git a/tools/blktap2/drivers/tapdisk.h b/tools/blktap2/drivers/tapdisk.h
index bd6835e5e8..460bc88d97 100644
--- a/tools/blktap2/drivers/tapdisk.h
+++ b/tools/blktap2/drivers/tapdisk.h
@@ -132,7 +132,9 @@ struct td_request {
int sidx;
void *private;
- uint64_t memshr_hnd;
+#ifdef MEMSHR
+ uint64_t memshr_hnd;
+#endif
};
/*
diff --git a/tools/blktap2/drivers/tapdisk2.c b/tools/blktap2/drivers/tapdisk2.c
index a7d4dfb4c2..961bad6c2f 100644
--- a/tools/blktap2/drivers/tapdisk2.c
+++ b/tools/blktap2/drivers/tapdisk2.c
@@ -34,7 +34,9 @@
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/ioctl.h>
+#ifdef MEMSHR
#include <memshr.h>
+#endif
#include "tapdisk.h"
#include "blktap2.h"
@@ -419,10 +421,15 @@ main(int argc, char *argv[])
break;
case 'h':
usage(argv[0], 0);
- break;
- case 's':
- memshr_set_domid(atoi(optarg));
- break;
+ break;
+ case 's':
+#ifdef MEMSHR
+ memshr_set_domid(atoi(optarg));
+#else
+ fprintf(stderr, "MEMSHR support not compiled in.\n");
+ exit(EXIT_FAILURE);
+#endif
+ break;
default:
usage(argv[0], EINVAL);
}