aboutsummaryrefslogtreecommitdiffstats
path: root/tools/blktap2/drivers
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2009-12-17 06:27:57 +0000
committerKeir Fraser <keir.fraser@citrix.com>2009-12-17 06:27:57 +0000
commit06d2e6455f6333c7049f72d41f8c89a1a9884e51 (patch)
tree982d287982defca7bb698a97c216eb059a4a6a60 /tools/blktap2/drivers
parent57ea955dd313ed5a93c5092dc4a9b22dfcb01949 (diff)
downloadxen-06d2e6455f6333c7049f72d41f8c89a1a9884e51.tar.gz
xen-06d2e6455f6333c7049f72d41f8c89a1a9884e51.tar.bz2
xen-06d2e6455f6333c7049f72d41f8c89a1a9884e51.zip
Multiple tapdisk2 processes may use the same parent disk images (later used to
detect sharable memory pages). This patch establishes unique id for each disk image opened by tapdisk2, and stores it in shared memory region, thus making it available to the remaining tapdisk2s. Signed-off-by: Grzegorz Milos <Grzegorz.Milos@citrix.com>
Diffstat (limited to 'tools/blktap2/drivers')
-rw-r--r--tools/blktap2/drivers/tapdisk-image.c11
-rw-r--r--tools/blktap2/drivers/tapdisk-image.h1
2 files changed, 8 insertions, 4 deletions
diff --git a/tools/blktap2/drivers/tapdisk-image.c b/tools/blktap2/drivers/tapdisk-image.c
index 6da7f48bd8..400c467583 100644
--- a/tools/blktap2/drivers/tapdisk-image.c
+++ b/tools/blktap2/drivers/tapdisk-image.c
@@ -28,6 +28,7 @@
#include <errno.h>
#include <unistd.h>
#include <stdlib.h>
+#include <memshr.h>
#include "tapdisk-image.h"
#include "tapdisk-driver.h"
@@ -52,10 +53,11 @@ tapdisk_image_allocate(char *file, int type, int storage,
return NULL;
}
- image->type = type;
- image->flags = flags;
- image->storage = storage;
- image->private = private;
+ image->type = type;
+ image->flags = flags;
+ image->storage = storage;
+ image->private = private;
+ image->memshr_id = memshr_vbd_image_get(file);
INIT_LIST_HEAD(&image->next);
return image;
@@ -69,6 +71,7 @@ tapdisk_image_free(td_image_t *image)
list_del(&image->next);
+ memshr_vbd_image_put(image->memshr_id);
free(image->name);
tapdisk_driver_free(image->driver);
free(image);
diff --git a/tools/blktap2/drivers/tapdisk-image.h b/tools/blktap2/drivers/tapdisk-image.h
index 8779dff8b7..33b1b851c3 100644
--- a/tools/blktap2/drivers/tapdisk-image.h
+++ b/tools/blktap2/drivers/tapdisk-image.h
@@ -34,6 +34,7 @@
struct td_image_handle {
int type;
char *name;
+ uint16_t memshr_id;
td_flag_t flags;
int storage;