From: Hitoshi Mitake <mitake.hito...@lab.ntt.co.jp>

Now the area isn't used and clients (QEMU and tgt) don't care about
it, we can recycle it for storing the btree_counter.

Cc: MORITA Kazutaka <morita.kazut...@lab.ntt.co.jp>
Tested-by: Valerio Pachera <siri...@gmail.com>
Cc: Alessandro Bolgia <alessan...@extensys.it>
Signed-off-by: Hitoshi Mitake <mitake.hito...@lab.ntt.co.jp>
---
 include/sheepdog_proto.h | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/include/sheepdog_proto.h b/include/sheepdog_proto.h
index 70563cd..8b5834b 100644
--- a/include/sheepdog_proto.h
+++ b/include/sheepdog_proto.h
@@ -101,7 +101,6 @@
 #define LEDGER_BIT (UINT64_C(1) << 59)
 #define OLD_MAX_DATA_OBJS (1ULL << 20)
 #define MAX_DATA_OBJS (1ULL << 32)
-#define MAX_CHILDREN 1024U
 #define SD_MAX_VDI_LEN 256U
 #define SD_MAX_VDI_TAG_LEN 256U
 #define SD_MAX_VDI_ATTR_KEY_LEN 256U
@@ -224,6 +223,19 @@ struct sd_rsp {
        };
 };
 
+/*
+ * Historical notes: previous version of sheepdog (< v0.9.0) has a limit of
+ * maximum number of children which can be created from single VDI. So the 
inode
+ * object has an array for storing the IDs of the child VDIs. The constant
+ * OLD_MAX_CHILDREN represents it. Current sheepdog doesn't have the 
limitation,
+ * so we are recycling the area (4 * OLD_MAX_CHILDREN = 4KB) for storing new
+ * metadata.
+ *
+ * users of the released area:
+ * - uint32_t btree_counter
+ */
+#define OLD_MAX_CHILDREN 1024U
+
 struct generation_reference {
        int32_t generation;
        int32_t count;
@@ -244,9 +256,11 @@ struct sd_inode {
        uint32_t snap_id;
        uint32_t vdi_id;
        uint32_t parent_vdi_id;
-       uint32_t __unused[MAX_CHILDREN];
-       uint32_t data_vdi_id[SD_INODE_DATA_INDEX];
+
        uint32_t btree_counter;
+       uint32_t __unused[OLD_MAX_CHILDREN - 1];
+
+       uint32_t data_vdi_id[SD_INODE_DATA_INDEX];
        struct generation_reference gref[SD_INODE_DATA_INDEX];
 };
 
-- 
1.9.1

-- 
sheepdog mailing list
sheepdog@lists.wpkg.org
http://lists.wpkg.org/mailman/listinfo/sheepdog

Reply via email to