Qemu backend driver for sheepdog used a hard-coded value 'SD_DATA_OBJ_SIZE' when you created VDI with "qemu-img" command.
Then, this patch add operation "SD_OP_GET_CLUSTER_DEFAULT" to get a cluster default value of block_size_shift for creating a VDI. Signed-off-by: Teruaki Ishizaki <ishizaki.teru...@lab.ntt.co.jp> --- include/sheepdog_proto.h | 8 ++++++++ sheep/ops.c | 18 ++++++++++++++++++ 2 files changed, 26 insertions(+), 0 deletions(-) diff --git a/include/sheepdog_proto.h b/include/sheepdog_proto.h index 5f6d157..9495742 100644 --- a/include/sheepdog_proto.h +++ b/include/sheepdog_proto.h @@ -45,6 +45,7 @@ #define SD_OP_READ_VDIS 0x15 #define SD_OP_FLUSH_VDI 0x16 #define SD_OP_DEL_VDI 0x17 +#define SD_OP_GET_CLUSTER_DEFAULT 0x18 /* macros in the SD_FLAG_CMD_XXX group are mutually exclusive */ #define SD_FLAG_CMD_WRITE 0x01 @@ -249,6 +250,13 @@ struct sd_rsp { uint32_t __pad2; uint8_t digest[20]; } hash; + struct { + uint32_t __pad1; + uint8_t nr_copies; + uint8_t copy_policy; + uint8_t block_size_shift; + uint8_t __pad2; + } cluster_default; uint32_t __pad[8]; }; diff --git a/sheep/ops.c b/sheep/ops.c index 5d71dde..809854a 100644 --- a/sheep/ops.c +++ b/sheep/ops.c @@ -1430,6 +1430,17 @@ static int local_vdi_state_snapshot_ctl(const struct sd_req *req, return SD_RES_SUCCESS; } +static int local_get_cluster_default(const struct sd_req *req, + struct sd_rsp *rsp, + void *data, const struct sd_node *sender) +{ + rsp->cluster_default.nr_copies = sys->cinfo.nr_copies; + rsp->cluster_default.copy_policy = sys->cinfo.copy_policy; + rsp->cluster_default.block_size_shift = sys->cinfo.block_size_shift; + + return SD_RES_SUCCESS; +} + static int cluster_inode_coherence(const struct sd_req *req, struct sd_rsp *rsp, void *data, const struct sd_node *sender) @@ -1852,6 +1863,13 @@ static struct sd_op_template sd_ops[] = { .process_main = local_vdi_state_snapshot_ctl, }, + [SD_OP_GET_CLUSTER_DEFAULT] = { + .name = "GET_CLUSTER_DEFAULT", + .type = SD_OP_TYPE_LOCAL, + .force = true, + .process_main = local_get_cluster_default, + }, + /* gateway I/O operations */ [SD_OP_CREATE_AND_WRITE_OBJ] = { .name = "CREATE_AND_WRITE_OBJ", -- 1.7.1 -- sheepdog mailing list sheepdog@lists.wpkg.org https://lists.wpkg.org/mailman/listinfo/sheepdog