[sheepdog] [PATCH] sheep: add operation to get cluster default setting
Teruaki Ishizaki
ishizaki.teruaki at lab.ntt.co.jp
Fri Jan 9 12:12:06 CET 2015
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.teruaki at 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
More information about the sheepdog
mailing list