Mercurial > nomad > experimental
changeset 1226:29714c8cf683
objstore/posix: replace {read,write} ops with {read,write}_page ops
Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author | Josef 'Jeff' Sipek <jeffpc@josefsipek.net> |
---|---|
date | Wed, 15 Apr 2020 10:18:28 -0400 |
parents | 0eae5bd81c26 |
children | ec45bc7fe702 |
files | src/objstore/posix/obj.c |
diffstat | 1 files changed, 12 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/src/objstore/posix/obj.c Wed Apr 15 10:21:30 2020 -0400 +++ b/src/objstore/posix/obj.c Wed Apr 15 10:18:28 2020 -0400 @@ -392,8 +392,7 @@ return ret; } -static ssize_t posix_read(struct objver *ver, void *buf, size_t len, - uint64_t offset) +static int posix_read_page(struct objver *ver, void *buf, uint64_t pgno) { int ret; int fd; @@ -402,18 +401,22 @@ if (fd < 0) return fd; - ret = xpread(fd, buf, len, sizeof(struct posix_ver_header) + offset); + ret = xpread(fd, buf, PAGE_SIZE, + sizeof(struct posix_ver_header) + (pgno * PAGE_SIZE)); /* no need to check for error since we're returning now anyway */ xclose(fd); - return ret ? ret : len; + return ret; } -static ssize_t posix_write(struct objver *ver, const void *buf, size_t len, - uint64_t offset) +static int posix_write_page(struct objver *ver, const void *buf, uint64_t pgno) { - return write_ver_data(ver, -1, buf, len, offset); + ssize_t ret; + + ret = write_ver_data(ver, -1, buf, PAGE_SIZE, pgno * PAGE_SIZE); + + return (ret == PAGE_SIZE) ? 0 : ret; } static void posix_free(struct obj *obj) @@ -428,7 +431,7 @@ .cow = posix_cow, .getattr = posix_getattr, .setattr = posix_setattr, - .read = posix_read, - .write = posix_write, + .read_page = posix_read_page, + .write_page = posix_write_page, .free = posix_free, };