diff --git a/example/simple/src/ctx.c b/example/simple/src/ctx.c index 9b39ac1..84f7f74 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; } diff --git a/example/simple/src/volume.c b/example/simple/src/volume.c index 2eab9d7..52585a4 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); }