diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2010-01-12 07:01:21 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2010-01-12 07:01:21 +0000 |
commit | 60e8e9aabcca4188e5ad2d0b5c8a448bd0c4437e (patch) | |
tree | 82019c4d2c4765199242e8143f414e6d51c9e1b0 /tools/blktap2 | |
parent | b57e4ee13e4b950ca5d75db23eb19789f19220d3 (diff) | |
download | xen-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/blktap2')
-rw-r--r-- | tools/blktap2/drivers/Makefile | 8 | ||||
-rw-r--r-- | tools/blktap2/drivers/tapdisk-image.c | 10 | ||||
-rw-r--r-- | tools/blktap2/drivers/tapdisk-vbd.c | 78 | ||||
-rw-r--r-- | tools/blktap2/drivers/tapdisk.h | 4 | ||||
-rw-r--r-- | tools/blktap2/drivers/tapdisk2.c | 15 |
5 files changed, 72 insertions, 43 deletions
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); } |