diff options
-rw-r--r-- | tools/blktap/Makefile | 2 | ||||
-rwxr-xr-x | tools/blktap/requests-async.c | 12 | ||||
-rw-r--r-- | tools/blktap/vdi.c | 23 |
3 files changed, 12 insertions, 25 deletions
diff --git a/tools/blktap/Makefile b/tools/blktap/Makefile index a0c197aedb..6ee79ada9c 100644 --- a/tools/blktap/Makefile +++ b/tools/blktap/Makefile @@ -80,7 +80,7 @@ install: all $(INSTALL_PROG) $(IBINS) $(DESTDIR)/$(BLKTAP_INSTALL_DIR) clean: - rm -rf *.a *.so *.o *.rpm $(LIB) *~ $(DEPS) xen TAGS blkdump $(VDI_TOOLS) parallax + rm -rf *.a *.so *.o *.rpm $(LIB) *~ $(DEPS) xen TAGS blkdump $(VDI_TOOLS) parallax vdi_unittest rpm: all rm -rf staging diff --git a/tools/blktap/requests-async.c b/tools/blktap/requests-async.c index 76083c7cc1..f1e0bc8425 100755 --- a/tools/blktap/requests-async.c +++ b/tools/blktap/requests-async.c @@ -51,6 +51,14 @@ struct io_req { void clear_w_bits(radix_tree_node node)
{
int i; + for (i=0; i<RADIX_TREE_MAP_ENTRIES; i++) + node[i] = node[i] & ONEMASK; + return; +} + +void clear_L3_w_bits(radix_tree_node node) +{ + int i; for (i=0; i<RADIX_TREE_MAP_ENTRIES; i+=2) node[i] = node[i] & ONEMASK; return; @@ -513,7 +521,7 @@ static void write_cb(struct io_ret r, void *param) DPRINTF("READ_L3_L2f\n");
node = (radix_tree_node) IO_BLOCK(r);
- clear_w_bits(node);
+ clear_L3_w_bits(node); if (node == NULL) goto fail;
a = node[L2_IDX(req->vaddr)];
addr = getid(a);
@@ -613,7 +621,7 @@ static void write_cb(struct io_ret r, void *param) DPRINTF("READ_L3_L1f\n");
node = (radix_tree_node) IO_BLOCK(r);
- clear_w_bits(node);
+ clear_L3_w_bits(node); if (node == NULL) goto fail;
a = node[L2_IDX(req->vaddr)];
addr = getid(a);
diff --git a/tools/blktap/vdi.c b/tools/blktap/vdi.c index 50ead81f01..f3181b86b2 100644 --- a/tools/blktap/vdi.c +++ b/tools/blktap/vdi.c @@ -14,6 +14,7 @@ #include <pthread.h> #include "blockstore.h" #include "block-async.h" +#include "requests-async.h" #include "radix.h" #include "vdi.h" @@ -161,28 +162,6 @@ void vdi_put(vdi_t *vdi) freeblock(vdi); } -u64 vdi_lookup_block(vdi_t *vdi, u64 vdi_block, int *writable) -{ - u64 gblock; - - gblock = lookup(VDI_HEIGHT, vdi->radix_root, vdi_block); - - if (writable != NULL) *writable = iswritable(gblock); - - return getid(gblock); -} - -void vdi_update_block(vdi_t *vdi, u64 vdi_block, u64 g_block) -{ - u64 id; - - /* updates are always writable. */ - id = writable(g_block); - - vdi->radix_root = update(VDI_HEIGHT, vdi->radix_root, vdi_block, id); - writeblock(vdi->block, vdi); -} - void vdi_snapshot(vdi_t *vdi) { snap_rec_t rec; |