This patch adds new variables to some structs (cluster_info, system_info, etc...) to store the vid space size.
Signed-off-by: Takafumi Fujieda <fujieda.takaf...@lab.ntt.co.jp> --- dog/cluster.c | 1 + dog/farm/farm.h | 3 ++- include/internal_proto.h | 6 ++++-- include/sheepdog_proto.h | 10 ++++++---- sheep/config.c | 4 +++- sheep/sheep_priv.h | 2 ++ 6 files changed, 18 insertions(+), 8 deletions(-) diff --git a/dog/cluster.c b/dog/cluster.c index 6a2db6e..2b6864a 100644 --- a/dog/cluster.c +++ b/dog/cluster.c @@ -37,6 +37,7 @@ static struct cluster_cmd_data { uint8_t copy_policy; uint8_t multithread; uint8_t block_size_shift; + uint8_t vid_space; bool force; bool strict; char name[STORE_LEN]; diff --git a/dog/farm/farm.h b/dog/farm/farm.h index 6b96c5e..ca25e6f 100644 --- a/dog/farm/farm.h +++ b/dog/farm/farm.h @@ -41,7 +41,8 @@ struct snap_log_hdr { uint8_t copy_number; uint8_t copy_policy; uint8_t block_size_shift; - uint8_t reserved[21]; + uint8_t vid_space; + uint8_t reserved[20]; }; struct snap_log { diff --git a/include/internal_proto.h b/include/internal_proto.h index 6b24b5c..6637568 100644 --- a/include/internal_proto.h +++ b/include/internal_proto.h @@ -219,7 +219,8 @@ struct cluster_info { uint8_t copy_policy; enum sd_status status : 8; uint8_t block_size_shift; - uint8_t __pad[3]; + uint8_t vid_space; + uint8_t __pad[2]; uint8_t store[STORE_LEN]; /* Node list at cluster_info->epoch */ @@ -234,7 +235,8 @@ struct epoch_log { uint8_t disable_recovery; uint8_t nr_copies; uint8_t copy_policy; - uint8_t __pad[3]; + uint8_t vid_space; + uint8_t __pad[2]; uint16_t flags; char drv_name[STORE_LEN]; struct sd_node nodes[0]; diff --git a/include/sheepdog_proto.h b/include/sheepdog_proto.h index bf3e9df..5db2394 100644 --- a/include/sheepdog_proto.h +++ b/include/sheepdog_proto.h @@ -101,6 +101,7 @@ * 60 - 63 ( 4 bits): object type identifier space */ +#define SD_VID_SPACE 24 #define VDI_SPACE_SHIFT 32 #define SD_VDI_MASK 0x00FFFFFF00000000 #define VDI_BIT (UINT64_C(1) << 63) @@ -115,7 +116,7 @@ #define SD_MAX_VDI_ATTR_KEY_LEN 256U #define SD_MAX_VDI_ATTR_VALUE_LEN 65536U #define SD_MAX_SNAPSHOT_TAG_LEN 256U -#define SD_NR_VDIS (1U << 24) +#define SD_NR_VDIS (1U << SD_VID_SPACE) #define SD_DATA_OBJ_SIZE (UINT64_C(1) << 22) #define SD_OLD_MAX_VDI_SIZE (SD_DATA_OBJ_SIZE * OLD_MAX_DATA_OBJS) #define SD_MAX_VDI_SIZE (SD_DATA_OBJ_SIZE * MAX_DATA_OBJS) @@ -180,7 +181,8 @@ struct sd_req { uint32_t tag; uint32_t nodes_nr; uint8_t block_size_shift; - uint8_t reserved[3]; + uint8_t vid_space; + uint8_t reserved[2]; } cluster; struct { uint32_t old_vid; @@ -258,11 +260,11 @@ struct sd_rsp { uint8_t digest[20]; } hash; struct { - uint32_t __pad1; + uint32_t __pad; uint8_t nr_copies; uint8_t copy_policy; uint8_t block_size_shift; - uint8_t __pad2; + uint8_t vid_space; } cluster_default; uint32_t __pad[8]; diff --git a/sheep/config.c b/sheep/config.c index 9518109..548a1e8 100644 --- a/sheep/config.c +++ b/sheep/config.c @@ -12,7 +12,7 @@ #include "sheep_priv.h" #define SD_FORMAT_VERSION 0x0006 -#define SD_CONFIG_SIZE 40 +#define SD_CONFIG_SIZE 48 static struct sheepdog_config { uint64_t ctime; @@ -24,6 +24,8 @@ static struct sheepdog_config { uint8_t block_size_shift; uint16_t version; uint64_t space; + uint8_t vid_space; + uint8_t _pad[7]; } config; char *config_path; diff --git a/sheep/sheep_priv.h b/sheep/sheep_priv.h index 3399a36..5608cbc 100644 --- a/sheep/sheep_priv.h +++ b/sheep/sheep_priv.h @@ -130,6 +130,8 @@ struct system_info { uint64_t disk_space; + uint32_t nr_vdis; + uint64_t vdi_mask; DECLARE_BITMAP(vdi_inuse, SD_NR_VDIS); DECLARE_BITMAP(vdi_deleted, SD_NR_VDIS); -- 1.7.1 -- sheepdog mailing list sheepdog@lists.wpkg.org https://lists.wpkg.org/mailman/listinfo/sheepdog