From d78c1ffa06a020d2aaa65c2efdebfaa5ed520f4a Mon Sep 17 00:00:00 2001 From: Adam Rutkowski Date: Tue, 21 Sep 2021 16:55:10 +0200 Subject: [PATCH 1/2] track offset in ctx data read/write callbacks Signed-off-by: Adam Rutkowski --- example/simple/src/ctx.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/example/simple/src/ctx.c b/example/simple/src/ctx.c index 20735c7..2aa58e8 100644 --- a/example/simple/src/ctx.c +++ b/example/simple/src/ctx.c @@ -64,6 +64,7 @@ static uint32_t ctx_data_read(void *dst, ctx_data_t *src, uint32_t size) struct volume_data *data = src; memcpy(dst, data->ptr + data->offset, size); + data->offset += size; return size; } @@ -76,6 +77,7 @@ static uint32_t ctx_data_write(ctx_data_t *dst, const void *src, uint32_t size) struct volume_data *data = dst; memcpy(data->ptr + data->offset, src, size); + data->offset += size; return size; } @@ -88,6 +90,7 @@ static uint32_t ctx_data_zero(ctx_data_t *dst, uint32_t size) struct volume_data *data = dst; memset(data->ptr + data->offset, 0, size); + data->offset += size; return size; } From 9d2393ca5f1ab6006cfdb50ae08acd5cd1a15172 Mon Sep 17 00:00:00 2001 From: Adam Rutkowski Date: Tue, 21 Sep 2021 16:56:02 +0200 Subject: [PATCH 2/2] use io offset rather than data offset for IO submission Signed-off-by: Adam Rutkowski --- example/simple/src/volume.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/example/simple/src/volume.c b/example/simple/src/volume.c index 7f0c66a..bab1e52 100644 --- a/example/simple/src/volume.c +++ b/example/simple/src/volume.c @@ -44,17 +44,19 @@ static void volume_close(ocf_volume_t volume) */ static void volume_submit_io(struct ocf_io *io) { + struct myvolume_io *myvolume_io = ocf_io_get_priv(io); struct volume_data *data; struct myvolume *myvolume; + uint32_t offset = myvolume_io->offset; data = ocf_io_get_data(io); myvolume = ocf_volume_get_priv(ocf_io_get_volume(io)); if (io->dir == OCF_WRITE) { memcpy(myvolume->mem + io->addr, - data->ptr + data->offset, io->bytes); + data->ptr + offset, io->bytes); } else { - memcpy(data->ptr + data->offset, + memcpy(data->ptr + offset, myvolume->mem + io->addr, io->bytes); }