Merge pull request #577 from arutk/sample_fix

simple sample: offset handling fixes in data and volume
This commit is contained in:
Robert Baldyga 2021-11-30 15:01:30 +01:00 committed by GitHub
commit aeca11a9c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 2 deletions

View File

@ -64,6 +64,7 @@ static uint32_t ctx_data_read(void *dst, ctx_data_t *src, uint32_t size)
struct volume_data *data = src; struct volume_data *data = src;
memcpy(dst, data->ptr + data->offset, size); memcpy(dst, data->ptr + data->offset, size);
data->offset += size;
return 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; struct volume_data *data = dst;
memcpy(data->ptr + data->offset, src, size); memcpy(data->ptr + data->offset, src, size);
data->offset += size;
return 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; struct volume_data *data = dst;
memset(data->ptr + data->offset, 0, size); memset(data->ptr + data->offset, 0, size);
data->offset += size;
return size; return size;
} }

View File

@ -44,17 +44,19 @@ static void volume_close(ocf_volume_t volume)
*/ */
static void volume_submit_io(struct ocf_io *io) static void volume_submit_io(struct ocf_io *io)
{ {
struct myvolume_io *myvolume_io = ocf_io_get_priv(io);
struct volume_data *data; struct volume_data *data;
struct myvolume *myvolume; struct myvolume *myvolume;
uint32_t offset = myvolume_io->offset;
data = ocf_io_get_data(io); data = ocf_io_get_data(io);
myvolume = ocf_volume_get_priv(ocf_io_get_volume(io)); myvolume = ocf_volume_get_priv(ocf_io_get_volume(io));
if (io->dir == OCF_WRITE) { if (io->dir == OCF_WRITE) {
memcpy(myvolume->mem + io->addr, memcpy(myvolume->mem + io->addr,
data->ptr + data->offset, io->bytes); data->ptr + offset, io->bytes);
} else { } else {
memcpy(data->ptr + data->offset, memcpy(data->ptr + offset,
myvolume->mem + io->addr, io->bytes); myvolume->mem + io->addr, io->bytes);
} }