From: Liu Yuan <[email protected]>

We should allocate different sizes for vdi and data object, instead
of fixed size for both.

Signed-off-by: Liu Yuan <[email protected]>
---
 sheep/simple_store.c |    5 +++--
 sheep/store.c        |    1 +
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/sheep/simple_store.c b/sheep/simple_store.c
index e1cfeca..7cdad31 100644
--- a/sheep/simple_store.c
+++ b/sheep/simple_store.c
@@ -84,6 +84,7 @@ static int store_write_last_sector(uint64_t oid, struct siocb 
*iocb)
        const int size = SECTOR_SIZE;
        char *buf = NULL;
        int ret;
+       uint32_t length = iocb->length;
 
        buf = valloc(size);
        if (!buf) {
@@ -94,7 +95,7 @@ static int store_write_last_sector(uint64_t oid, struct siocb 
*iocb)
 
        iocb->buf = buf;
        iocb->length = size;
-       iocb->offset = SD_DATA_OBJ_SIZE - size;
+       iocb->offset = length - size;
        ret = simple_store_write(oid, iocb);
        free(buf);
 
@@ -139,7 +140,7 @@ static int simple_store_open(uint64_t oid, struct siocb 
*iocb, int create)
                /*
                 * Preallocate the whole object to get a better filesystem 
layout.
                 */
-               ret = fallocate(iocb->fd, 0, 0, SD_DATA_OBJ_SIZE);
+               ret = fallocate(iocb->fd, 0, 0, iocb->length);
                if (ret < 0) {
                        if (errno != ENOSYS && errno != EOPNOTSUPP) {
                                ret = SD_RES_EIO;
diff --git a/sheep/store.c b/sheep/store.c
index 0a1932d..e2fd0ee 100644
--- a/sheep/store.c
+++ b/sheep/store.c
@@ -648,6 +648,7 @@ int store_create_and_write_obj(const struct sd_req *req, 
struct sd_rsp *rsp, voi
        memset(&iocb, 0, sizeof(iocb));
        iocb.epoch = epoch;
        iocb.flags = hdr->flags;
+       iocb.length = hdr->data_length;
        ret = sd_store->open(hdr->oid, &iocb, 1);
        if (ret != SD_RES_SUCCESS)
                return ret;
-- 
1.7.8.2

-- 
sheepdog mailing list
[email protected]
http://lists.wpkg.org/mailman/listinfo/sheepdog

Reply via email to