- clear bitmap for hyper valume
- return error if inode operatoin fails as before

Signed-off-by: Liu Yuan <[email protected]>
---
 sheep/ops.c |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/sheep/ops.c b/sheep/ops.c
index b626489..4dffa86 100644
--- a/sheep/ops.c
+++ b/sheep/ops.c
@@ -819,7 +819,7 @@ static int local_flush_vdi(struct request *req)
 static int local_discard_obj(struct request *req)
 {
        uint64_t oid = req->rq.obj.oid;
-       uint32_t vid = oid_to_vid(oid), zero = 0, tmp_vid;
+       uint32_t vid = oid_to_vid(oid), tmp_vid;
        int ret = SD_RES_SUCCESS, idx = data_oid_to_idx(oid);
        struct sd_inode *inode = xmalloc(sizeof(struct sd_inode));
 
@@ -832,9 +832,9 @@ static int local_discard_obj(struct request *req)
        tmp_vid = INODE_GET_VID(inode, idx);
        /* if vid in idx is not exist, we don't need to remove it */
        if (tmp_vid) {
-               INODE_SET_VID(inode, idx, vid);
+               INODE_SET_VID(inode, idx, 0);
                ret = sd_inode_write_vid(sheep_bnode_writer, inode, idx, vid,
-                                        zero, 0, false, false);
+                                        0, 0, false, false);
                if (ret != SD_RES_SUCCESS)
                        goto out;
                if (sd_remove_object(oid) != SD_RES_SUCCESS)
@@ -846,7 +846,7 @@ static int local_discard_obj(struct request *req)
         */
 out:
        free(inode);
-       return SD_RES_SUCCESS;
+       return ret;
 }
 
 static int local_flush_and_del(struct request *req)
-- 
1.7.9.5

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

Reply via email to