Change is_erasure_obj(), is_erasure_oid() and get_store_objsize() in sheep and 
dog
to deal with erasure-code for hyper volume.

Signed-off-by: Robin Dong <[email protected]>
---
 dog/common.c             |    4 ++++
 include/sheepdog_proto.h |    3 +++
 sheep/gateway.c          |    6 +++++-
 3 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/dog/common.c b/dog/common.c
index bc8cb79..86a1f30 100644
--- a/dog/common.c
+++ b/dog/common.c
@@ -333,6 +333,8 @@ size_t get_store_objsize(uint8_t copy_policy, uint64_t oid)
 {
        if (is_vdi_obj(oid))
                return SD_INODE_SIZE;
+       if (is_vdi_btree_obj(oid))
+               return SD_INODE_DATA_INDEX_SIZE;
        if (copy_policy != 0) {
                int d;
 
@@ -346,6 +348,8 @@ bool is_erasure_oid(uint64_t oid, uint8_t policy)
 {
        if (is_vdi_obj(oid))
                return false;
+       if (is_vdi_btree_obj(oid))
+               return false;
        if (policy == 0)
                return false;
        return true;
diff --git a/include/sheepdog_proto.h b/include/sheepdog_proto.h
index beab3cd..cb47e3f 100644
--- a/include/sheepdog_proto.h
+++ b/include/sheepdog_proto.h
@@ -419,6 +419,9 @@ static inline size_t get_objsize(uint64_t oid)
        if (is_vdi_attr_obj(oid))
                return SD_ATTR_OBJ_SIZE;
 
+       if (is_vdi_btree_obj(oid))
+               return SD_INODE_DATA_INDEX_SIZE;
+
        return SD_DATA_OBJ_SIZE;
 }
 
diff --git a/sheep/gateway.c b/sheep/gateway.c
index e2e5a21..3565619 100644
--- a/sheep/gateway.c
+++ b/sheep/gateway.c
@@ -194,6 +194,9 @@ bool is_erasure_obj(uint64_t oid, uint8_t copy_policy)
        if (is_vdi_obj(oid))
                return false;
 
+       if (is_vdi_btree_obj(oid))
+               return false;
+
        if (copy_policy > 0)
                return true;
 
@@ -202,7 +205,8 @@ bool is_erasure_obj(uint64_t oid, uint8_t copy_policy)
 
 bool is_erasure_oid(uint64_t oid)
 {
-       return !is_vdi_obj(oid) && get_vdi_copy_policy(oid_to_vid(oid)) > 0;
+       return !is_vdi_obj(oid) && !is_vdi_btree_obj(oid) &&
+               get_vdi_copy_policy(oid_to_vid(oid)) > 0;
 }
 
 /* Prepare request iterator and buffer for each replica */
-- 
1.7.1

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

Reply via email to