1, make it more readable

2, malloc size is not right, not multiply size of uint32_t

Signed-off-by: HaiTing Yao <[email protected]>
---
 sheep/vdi.c |   15 ++++++++-------
 1 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/sheep/vdi.c b/sheep/vdi.c
index 3791127..3438858 100644
--- a/sheep/vdi.c
+++ b/sheep/vdi.c
@@ -425,7 +425,7 @@ struct deletion_work {
        uint32_t vid;
 
        int count;
-       char *buf;
+       uint32_t *buf;
 };
 
 static LIST_HEAD(deletion_work_list);
@@ -433,7 +433,7 @@ static LIST_HEAD(deletion_work_list);
 static void delete_one(struct work *work)
 {
        struct deletion_work *dw = container_of(work, struct deletion_work, 
work);
-       uint32_t vdi_id = *(((uint32_t *)dw->buf) + dw->count - dw->done - 1);
+       uint32_t vdi_id = *(dw->buf + dw->count - dw->done - 1);
        struct sd_vnode *entries = NULL;
        int nr_vnodes, nr_zones;
        int ret, i;
@@ -516,9 +516,9 @@ static int fill_vdi_list(struct deletion_work *dw,
                goto err;
        }
 
-       ((uint32_t *)dw->buf)[dw->count++] = root_vid;
+       dw->buf[dw->count++] = root_vid;
 again:
-       vid = ((uint32_t *)dw->buf)[done++];
+       vid = dw->buf[done++];
        ret = read_object(entries, nr_vnodes, nr_zones, dw->epoch,
                          vid_to_vdi_oid(vid), (char *)inode,
                          SD_INODE_HEADER_SIZE, 0, sys->nr_sobjs);
@@ -535,10 +535,10 @@ again:
                if (!inode->child_vdi_id[i])
                        continue;
 
-               ((uint32_t *)dw->buf)[dw->count++] = inode->child_vdi_id[i];
+               dw->buf[dw->count++] = inode->child_vdi_id[i];
        }
 
-       if (((uint32_t *)dw->buf)[done])
+       if (dw->buf[done])
                goto again;
 err:
        free(inode);
@@ -597,7 +597,8 @@ int start_deletion(uint32_t vid, uint32_t epoch)
                goto err;
        }
 
-       dw->buf = zalloc(1 << 20); /* FIXME: handle larger buffer */
+       /* buf is to store vdi id of every object */
+       dw->buf = zalloc(SD_INODE_SIZE - SD_INODE_HEADER_SIZE); 
        if (!dw->buf) {
                ret = SD_RES_NO_MEM;
                goto err;
-- 
1.7.1

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

Reply via email to