[sheepdog] [PATCH v2 3/3] add const where possible
MORITA Kazutaka
morita.kazutaka at lab.ntt.co.jp
Thu Oct 18 09:23:24 CEST 2012
Signed-off-by: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>
---
collie/cluster.c | 2 +-
collie/collie.h | 9 +++--
collie/common.c | 2 +-
collie/node.c | 4 +-
collie/vdi.c | 81 ++++++++++++++++++++++-------------------
include/net.h | 6 ++--
include/sheep.h | 31 ++++++++--------
include/sheepdog_proto.h | 5 ++-
lib/net.c | 6 ++--
sheep/cluster.h | 26 +++++++------
sheep/cluster/accord.c | 2 +-
sheep/cluster/corosync.c | 4 +-
sheep/cluster/local.c | 2 +-
sheep/cluster/zookeeper.c | 2 +-
sheep/farm/farm.c | 10 +++---
sheep/gateway.c | 18 +++++-----
sheep/group.c | 63 ++++++++++++++++++--------------
sheep/object_cache.c | 10 +++---
sheep/ops.c | 22 ++++++------
sheep/plain_store.c | 21 ++++++-----
sheep/recovery.c | 21 +++++------
sheep/request.c | 2 +-
sheep/sheep_priv.h | 89 +++++++++++++++++++++++----------------------
sheep/sockfd_cache.c | 28 +++++++-------
sheep/vdi.c | 28 ++++++++-------
25 files changed, 258 insertions(+), 236 deletions(-)
diff --git a/collie/cluster.c b/collie/cluster.c
index 59cdc65..3d0a54a 100644
--- a/collie/cluster.c
+++ b/collie/cluster.c
@@ -177,7 +177,7 @@ again:
for (i = 0; i < nr_logs; i++) {
int j;
char name[128];
- struct sd_node *entry;
+ const struct sd_node *entry;
ti = logs[i].time;
if (raw_output) {
diff --git a/collie/collie.h b/collie/collie.h
index 347e5a9..909a072 100644
--- a/collie/collie.h
+++ b/collie/collie.h
@@ -65,11 +65,12 @@ extern struct sd_vnode sd_vnodes[SD_MAX_VNODES];
extern int sd_nodes_nr, sd_vnodes_nr;
extern unsigned master_idx;
-bool is_current(struct sheepdog_inode *i);
+bool is_current(const struct sheepdog_inode *i);
char *size_to_str(uint64_t _size, char *str, int str_size);
-typedef void (*vdi_parser_func_t)(uint32_t vid, char *name, char *tag,
- uint32_t snapid, uint32_t flags,
- struct sheepdog_inode *i, void *data);
+typedef void (*vdi_parser_func_t)(uint32_t vid, const char *name,
+ const char *tag, uint32_t snapid,
+ uint32_t flags,
+ const struct sheepdog_inode *i, void *data);
int parse_vdi(vdi_parser_func_t func, size_t size, void *data);
int sd_read_object(uint64_t oid, void *data, unsigned int datalen,
uint64_t offset, bool direct);
diff --git a/collie/common.c b/collie/common.c
index 4e606d5..7a16f8e 100644
--- a/collie/common.c
+++ b/collie/common.c
@@ -11,7 +11,7 @@
#include "collie.h"
-bool is_current(struct sheepdog_inode *i)
+bool is_current(const struct sheepdog_inode *i)
{
return !i->snap_ctime;
}
diff --git a/collie/node.c b/collie/node.c
index a24fb3f..68e4afd 100644
--- a/collie/node.c
+++ b/collie/node.c
@@ -11,9 +11,9 @@
#include "collie.h"
-static void cal_total_vdi_size(uint32_t vid, char *name, char *tag,
+static void cal_total_vdi_size(uint32_t vid, const char *name, const char *tag,
uint32_t snapid, uint32_t flags,
- struct sheepdog_inode *i, void *data)
+ const struct sheepdog_inode *i, void *data)
{
uint64_t *size = data;
diff --git a/collie/vdi.c b/collie/vdi.c
index a86055d..7ca3237 100644
--- a/collie/vdi.c
+++ b/collie/vdi.c
@@ -45,8 +45,8 @@ static struct vdi_cmd_data {
} vdi_cmd_data = { ~0, };
struct get_vdi_info {
- char *name;
- char *tag;
+ const char *name;
+ const char *tag;
uint32_t vid;
uint32_t snapid;
};
@@ -81,8 +81,9 @@ static int parse_option_size(const char *value, uint64_t *ret)
return 0;
}
-static void print_vdi_list(uint32_t vid, char *name, char *tag, uint32_t snapid,
- uint32_t flags, struct sheepdog_inode *i, void *data)
+static void print_vdi_list(uint32_t vid, const char *name, const char *tag,
+ uint32_t snapid, uint32_t flags,
+ const struct sheepdog_inode *i, void *data)
{
int idx;
bool is_clone = false;
@@ -141,8 +142,9 @@ static void print_vdi_list(uint32_t vid, char *name, char *tag, uint32_t snapid,
}
}
-static void print_vdi_tree(uint32_t vid, char *name, char *tag, uint32_t snapid,
- uint32_t flags, struct sheepdog_inode *i, void *data)
+static void print_vdi_tree(uint32_t vid, const char *name, const char *tag,
+ uint32_t snapid, uint32_t flags,
+ const struct sheepdog_inode *i, void *data)
{
time_t ti;
struct tm tm;
@@ -161,8 +163,9 @@ static void print_vdi_tree(uint32_t vid, char *name, char *tag, uint32_t snapid,
add_vdi_tree(name, buf, vid, i->parent_vdi_id, highlight && is_current(i));
}
-static void print_vdi_graph(uint32_t vid, char *name, char *tag, uint32_t snapid,
- uint32_t flags, struct sheepdog_inode *i, void *data)
+static void print_vdi_graph(uint32_t vid, const char *name, const char *tag,
+ uint32_t snapid, uint32_t flags,
+ const struct sheepdog_inode *i, void *data)
{
time_t ti;
struct tm tm;
@@ -194,8 +197,9 @@ static void print_vdi_graph(uint32_t vid, char *name, char *tag, uint32_t snapid
}
-static void get_oid(uint32_t vid, char *name, char *tag, uint32_t snapid,
- uint32_t flags, struct sheepdog_inode *i, void *data)
+static void get_oid(uint32_t vid, const char *name, const char *tag,
+ uint32_t snapid, uint32_t flags,
+ const struct sheepdog_inode *i, void *data)
{
struct get_vdi_info *info = data;
@@ -328,7 +332,7 @@ static void parse_objs(uint64_t oid, obj_parser_func_t func, void *data, unsigne
static int vdi_list(int argc, char **argv)
{
- char *vdiname = argv[optind];
+ const char *vdiname = argv[optind];
if (!raw_output)
printf(" Name Id Size Used Shared Creation time VDI id Copies Tag\n");
@@ -373,7 +377,7 @@ static int vdi_graph(int argc, char **argv)
return EXIT_SUCCESS;
}
-static int find_vdi_name(char *vdiname, uint32_t snapid, const char *tag,
+static int find_vdi_name(const char *vdiname, uint32_t snapid, const char *tag,
uint32_t *vid, int for_snapshot)
{
int ret, fd;
@@ -417,7 +421,7 @@ out:
return ret;
}
-static int read_vdi_obj(char *vdiname, int snapid, const char *tag,
+static int read_vdi_obj(const char *vdiname, int snapid, const char *tag,
uint32_t *pvid, struct sheepdog_inode *inode,
size_t size)
{
@@ -450,8 +454,9 @@ static int read_vdi_obj(char *vdiname, int snapid, const char *tag,
return EXIT_SUCCESS;
}
-static int do_vdi_create(char *vdiname, int64_t vdi_size, uint32_t base_vid,
- uint32_t *vdi_id, bool snapshot, int nr_copies)
+static int do_vdi_create(const char *vdiname, int64_t vdi_size,
+ uint32_t base_vid, uint32_t *vdi_id, bool snapshot,
+ int nr_copies)
{
struct sd_req hdr;
struct sd_rsp *rsp = (struct sd_rsp *)&hdr;
@@ -499,7 +504,7 @@ static int do_vdi_create(char *vdiname, int64_t vdi_size, uint32_t base_vid,
static int vdi_create(int argc, char **argv)
{
- char *vdiname = argv[optind++];
+ const char *vdiname = argv[optind++];
uint64_t size;
uint32_t vid;
uint64_t oid;
@@ -568,7 +573,7 @@ out:
static int vdi_snapshot(int argc, char **argv)
{
- char *vdiname = argv[optind++];
+ const char *vdiname = argv[optind++];
uint32_t vid;
int ret;
char buf[SD_INODE_HEADER_SIZE];
@@ -597,7 +602,7 @@ static int vdi_snapshot(int argc, char **argv)
static int vdi_clone(int argc, char **argv)
{
- char *src_vdi = argv[optind++], *dst_vdi;
+ const char *src_vdi = argv[optind++], *dst_vdi;
uint32_t base_vid, new_vid;
uint64_t oid;
int idx, max_idx, ret;
@@ -681,7 +686,7 @@ out:
static int vdi_resize(int argc, char **argv)
{
- char *vdiname = argv[optind++];
+ const char *vdiname = argv[optind++];
uint64_t new_size;
uint32_t vid;
int ret;
@@ -770,7 +775,7 @@ static int vdi_delete(int argc, char **argv)
static int vdi_rollback(int argc, char **argv)
{
- char *vdiname = argv[optind++];
+ const char *vdiname = argv[optind++];
uint32_t base_vid;
int ret;
char buf[SD_INODE_HEADER_SIZE];
@@ -799,7 +804,7 @@ static int vdi_rollback(int argc, char **argv)
static int vdi_object(int argc, char **argv)
{
- char *vdiname = argv[optind];
+ const char *vdiname = argv[optind];
unsigned idx = vdi_cmd_data.index;
struct get_vdi_info info;
uint32_t vid;
@@ -859,7 +864,7 @@ static int print_obj_epoch(uint64_t oid)
struct sd_req hdr;
struct sd_rsp *rsp = (struct sd_rsp *)&hdr;
struct sd_vnode vnodes[SD_MAX_VNODES];
- struct sd_vnode *vnode_buf[SD_MAX_COPIES];
+ const struct sd_vnode *vnode_buf[SD_MAX_COPIES];
struct epoch_log *logs;
int vnodes_nr, nr_logs, log_length;
char host[128];
@@ -917,7 +922,7 @@ error:
static int vdi_track(int argc, char **argv)
{
- char *vdiname = argv[optind];
+ const char *vdiname = argv[optind];
unsigned idx = vdi_cmd_data.index;
struct get_vdi_info info;
uint32_t vid;
@@ -973,8 +978,8 @@ static int vdi_track(int argc, char **argv)
return EXIT_SUCCESS;
}
-static int find_vdi_attr_oid(char *vdiname, char *tag, uint32_t snapid,
- char *key, void *value, unsigned int value_len,
+static int find_vdi_attr_oid(const char *vdiname, const char *tag, uint32_t snapid,
+ const char *key, void *value, unsigned int value_len,
uint32_t *vid, uint64_t *oid, unsigned int *nr_copies,
bool create, bool excl, bool delete)
{
@@ -1037,7 +1042,8 @@ static int vdi_setattr(int argc, char **argv)
int ret, value_len = 0;
uint64_t attr_oid = 0;
uint32_t vid = 0, nr_copies = 0;
- char *vdiname = argv[optind++], *key, *value;
+ const char *vdiname = argv[optind++], *key;
+ char *value;
uint64_t offset;
key = argv[optind++];
@@ -1100,7 +1106,7 @@ static int vdi_getattr(int argc, char **argv)
int ret;
uint64_t oid, attr_oid = 0;
uint32_t vid = 0, nr_copies = 0;
- char *vdiname = argv[optind++], *key;
+ const char *vdiname = argv[optind++], *key;
struct sheepdog_vdi_attr vattr;
key = argv[optind++];
@@ -1139,7 +1145,7 @@ static int vdi_getattr(int argc, char **argv)
static int vdi_read(int argc, char **argv)
{
- char *vdiname = argv[optind++];
+ const char *vdiname = argv[optind++];
int ret, idx;
struct sheepdog_inode *inode = NULL;
uint64_t offset = 0, oid, done = 0, total = (uint64_t) -1;
@@ -1225,7 +1231,7 @@ out:
static int vdi_write(int argc, char **argv)
{
- char *vdiname = argv[optind++];
+ const char *vdiname = argv[optind++];
uint32_t vid, flags;
int ret, idx;
struct sheepdog_inode *inode = NULL;
@@ -1342,7 +1348,7 @@ out:
return ret;
}
-static void *read_object_from(struct sd_vnode *vnode, uint64_t oid)
+static void *read_object_from(const struct sd_vnode *vnode, uint64_t oid)
{
struct sd_req hdr;
struct sd_rsp *rsp = (struct sd_rsp *)&hdr;
@@ -1391,7 +1397,8 @@ static void *read_object_from(struct sd_vnode *vnode, uint64_t oid)
return buf;
}
-static void write_object_to(struct sd_vnode *vnode, uint64_t oid, void *buf)
+static void write_object_to(const struct sd_vnode *vnode, uint64_t oid,
+ void *buf)
{
struct sd_req hdr;
struct sd_rsp *rsp = (struct sd_rsp *)&hdr;
@@ -1436,7 +1443,7 @@ static void write_object_to(struct sd_vnode *vnode, uint64_t oid, void *buf)
*/
static void do_check_repair(uint64_t oid, int nr_copies)
{
- struct sd_vnode *tgt_vnodes[SD_MAX_COPIES];
+ const struct sd_vnode *tgt_vnodes[SD_MAX_COPIES];
void *buf, *buf_cmp;
int i;
@@ -1462,7 +1469,7 @@ fix_consistency:
static int vdi_check(int argc, char **argv)
{
- char *vdiname = argv[optind++];
+ const char *vdiname = argv[optind++];
int ret;
uint64_t total, done = 0, oid;
uint32_t idx = 0, vid;
@@ -1493,7 +1500,7 @@ out:
static int vdi_flush(int argc, char **argv)
{
- char *vdiname = argv[optind++];
+ const char *vdiname = argv[optind++];
struct sd_req hdr;
uint32_t vid;
int ret = EXIT_SUCCESS;
@@ -1600,7 +1607,7 @@ static int get_obj_backup(int idx, uint32_t from_vid, uint32_t to_vid,
static int vdi_backup(int argc, char **argv)
{
- char *vdiname = argv[optind++];
+ const char *vdiname = argv[optind++];
int ret = EXIT_SUCCESS, idx, nr_objs;
struct sheepdog_inode *from_inode = xzalloc(sizeof(*from_inode));
struct sheepdog_inode *to_inode = xzalloc(sizeof(*to_inode));
@@ -1712,7 +1719,7 @@ static int restore_obj(struct obj_backup *backup, uint32_t vid,
0, parent_inode->nr_copies, false, true);
}
-static uint32_t do_restore(char *vdiname, int snapid, const char *tag)
+static uint32_t do_restore(const char *vdiname, int snapid, const char *tag)
{
int ret;
uint32_t vid;
@@ -1780,7 +1787,7 @@ out:
static int vdi_restore(int argc, char **argv)
{
- char *vdiname = argv[optind++];
+ const char *vdiname = argv[optind++];
int ret;
char buf[SD_INODE_HEADER_SIZE] = {0};
struct sheepdog_inode *current_inode = xzalloc(sizeof(*current_inode));
diff --git a/include/net.h b/include/net.h
index 43a5b1b..5c28846 100644
--- a/include/net.h
+++ b/include/net.h
@@ -36,17 +36,17 @@ int conn_tx_off(struct connection *conn);
int conn_tx_on(struct connection *conn);
int conn_rx_off(struct connection *conn);
int conn_rx_on(struct connection *conn);
-bool is_conn_dead(struct connection *conn);
+bool is_conn_dead(const struct connection *conn);
int do_read(int sockfd, void *buf, int len);
int rx(struct connection *conn, enum conn_state next_state);
int tx(struct connection *conn, enum conn_state next_state, int flags);
int connect_to(const char *name, int port);
int send_req(int sockfd, struct sd_req *hdr, void *data, unsigned int wlen);
int exec_req(int sockfd, struct sd_req *hdr, void *data);
-int create_listen_ports(char *bindaddr, int port,
+int create_listen_ports(const char *bindaddr, int port,
int (*callback)(int fd, void *), void *data);
-char *addr_to_str(char *str, int size, uint8_t *addr, uint16_t port);
+char *addr_to_str(char *str, int size, const uint8_t *addr, uint16_t port);
uint8_t *str_to_addr(int af, const char *ipstr, uint8_t *addr);
int set_nonblocking(int fd);
int set_nodelay(int fd);
diff --git a/include/sheep.h b/include/sheep.h
index ed85b98..5bedfa8 100644
--- a/include/sheep.h
+++ b/include/sheep.h
@@ -63,14 +63,14 @@ static inline void sd_init_req(struct sd_req *req, uint8_t opcode)
req->proto_ver = opcode < 0x80 ? SD_PROTO_VER : SD_SHEEP_PROTO_VER;
}
-static inline int same_zone(struct sd_vnode *e, int n1, int n2)
+static inline int same_zone(const struct sd_vnode *e, int n1, int n2)
{
return e[n1].zone == e[n2].zone;
}
/* Get the first vnode's index which is matching the OID */
-static inline int get_vnode_first_idx(struct sd_vnode *entries, int nr_entries,
- uint64_t oid)
+static inline int get_vnode_first_idx(const struct sd_vnode *entries,
+ int nr_entries, uint64_t oid)
{
uint64_t id = fnv_64a_buf(&oid, sizeof(oid), FNV1A_64_INIT);
int start, end, pos;
@@ -93,8 +93,9 @@ static inline int get_vnode_first_idx(struct sd_vnode *entries, int nr_entries,
}
/* Get next vnode's index according to the PREV_IDXS */
-static inline int get_vnode_next_idx(struct sd_vnode *entries, int nr_entries,
- int *prev_idxs, int nr_prev_idxs)
+static inline int get_vnode_next_idx(const struct sd_vnode *entries,
+ int nr_entries, int *prev_idxs,
+ int nr_prev_idxs)
{
int i, idx, first_idx;
bool found;
@@ -119,7 +120,7 @@ static inline int get_vnode_next_idx(struct sd_vnode *entries, int nr_entries,
}
/* Get the n'th vnode's index which is matching the OID */
-static inline int get_vnode_nth_idx(struct sd_vnode *entries,
+static inline int get_vnode_nth_idx(const struct sd_vnode *entries,
int nr_entries, uint64_t oid, int nth)
{
int nr_idxs = 0, idxs[SD_MAX_COPIES];
@@ -138,18 +139,18 @@ static inline int get_vnode_nth_idx(struct sd_vnode *entries,
return idxs[nth];
}
-static inline struct sd_vnode *oid_to_vnode(struct sd_vnode *entries,
- int nr_entries, uint64_t oid,
- int copy_idx)
+static inline const struct sd_vnode *oid_to_vnode(const struct sd_vnode *entries,
+ int nr_entries, uint64_t oid,
+ int copy_idx)
{
int idx = get_vnode_nth_idx(entries, nr_entries, oid, copy_idx);
return &entries[idx];
}
-static inline void oid_to_vnodes(struct sd_vnode *entries, int nr_entries,
+static inline void oid_to_vnodes(const struct sd_vnode *entries, int nr_entries,
uint64_t oid, int nr_copies,
- struct sd_vnode **vnodes)
+ const struct sd_vnode **vnodes)
{
int idx, idxs[SD_MAX_COPIES], i;
@@ -164,13 +165,13 @@ static inline void oid_to_vnodes(struct sd_vnode *entries, int nr_entries,
}
}
-static inline void oid_to_nodes(struct sd_vnode *entries, int nr_entries,
+static inline void oid_to_nodes(const struct sd_vnode *entries, int nr_entries,
uint64_t oid, int nr_copies,
- struct sd_node *all_nodes,
- struct sd_node **nodes)
+ const struct sd_node *all_nodes,
+ const struct sd_node **nodes)
{
int i;
- struct sd_vnode *vnodes[SD_MAX_COPIES];
+ const struct sd_vnode *vnodes[SD_MAX_COPIES];
oid_to_vnodes(entries, nr_entries, oid, nr_copies, vnodes);
for (i = 0; i < nr_copies; i++)
diff --git a/include/sheepdog_proto.h b/include/sheepdog_proto.h
index 7d205dc..865f451 100644
--- a/include/sheepdog_proto.h
+++ b/include/sheepdog_proto.h
@@ -203,7 +203,7 @@ struct snap_log {
/*
* 64 bit Fowler/Noll/Vo FNV-1a hash code
*/
-static inline uint64_t fnv_64a_buf(void *buf, size_t len, uint64_t hval)
+static inline uint64_t fnv_64a_buf(const void *buf, size_t len, uint64_t hval)
{
unsigned char *bp = (unsigned char *) buf;
unsigned char *be = bp + len;
@@ -222,7 +222,8 @@ static inline uint64_t hash_64(uint64_t val, unsigned int bits)
return hash & ((1 << bits) - 1);
}
-static inline bool is_data_obj_writeable(struct sheepdog_inode *inode, int idx)
+static inline bool is_data_obj_writeable(const struct sheepdog_inode *inode,
+ int idx)
{
return inode->vdi_id == inode->data_vdi_id[idx];
}
diff --git a/lib/net.c b/lib/net.c
index cfc9625..6d2fcaf 100644
--- a/lib/net.c
+++ b/lib/net.c
@@ -60,7 +60,7 @@ int conn_rx_on(struct connection *conn)
return modify_event(conn->fd, conn->events);
}
-notrace bool is_conn_dead(struct connection *conn)
+notrace bool is_conn_dead(const struct connection *conn)
{
if (conn->c_rx_state == C_IO_CLOSED || conn->c_tx_state == C_IO_CLOSED)
return true;
@@ -113,7 +113,7 @@ notrace int tx(struct connection *conn, enum conn_state next_state, int flags)
return ret;
}
-int create_listen_ports(char *bindaddr, int port,
+int create_listen_ports(const char *bindaddr, int port,
int (*callback)(int fd, void *), void *data)
{
char servname[64];
@@ -387,7 +387,7 @@ int exec_req(int sockfd, struct sd_req *hdr, void *data)
return 0;
}
-char *addr_to_str(char *str, int size, uint8_t *addr, uint16_t port)
+char *addr_to_str(char *str, int size, const uint8_t *addr, uint16_t port)
{
int af = AF_INET6;
int addr_start_idx = 0;
diff --git a/sheep/cluster.h b/sheep/cluster.h
index 3e881d7..2679c19 100644
--- a/sheep/cluster.h
+++ b/sheep/cluster.h
@@ -70,7 +70,8 @@ struct cluster_driver {
*
* Returns zero on success, -1 on error
*/
- int (*join)(struct sd_node *myself, void *opaque, size_t opaque_len);
+ int (*join)(const struct sd_node *myself, void *opaque,
+ size_t opaque_len);
/*
* Leave the cluster
@@ -141,7 +142,7 @@ static inline struct cluster_driver *find_cdrv(const char *name)
return NULL;
}
-static inline const char *get_cdrv_option(struct cluster_driver *cdrv,
+static inline const char *get_cdrv_option(const struct cluster_driver *cdrv,
const char *arg)
{
int len = strlen(cdrv->name);
@@ -152,12 +153,12 @@ static inline const char *get_cdrv_option(struct cluster_driver *cdrv,
return NULL;
}
-static inline char *node_to_str(struct sd_node *id)
+static inline char *node_to_str(const struct sd_node *id)
{
static char str[256];
char name[256];
int af = AF_INET6;
- uint8_t *addr = id->nid.addr;
+ const uint8_t *addr = id->nid.addr;
/* Find address family type */
if (addr[12]) {
@@ -193,14 +194,15 @@ static inline struct sd_node *str_to_node(const char *str, struct sd_node *id)
}
/* callbacks back into sheepdog from the cluster drivers */
-void sd_join_handler(struct sd_node *joined, struct sd_node *members,
- size_t nr_members, enum cluster_join_result result,
- void *opaque);
-void sd_leave_handler(struct sd_node *left, struct sd_node *members,
- size_t nr_members);
-void sd_notify_handler(struct sd_node *sender, void *msg, size_t msg_len);
-bool sd_block_handler(struct sd_node *sender);
-enum cluster_join_result sd_check_join_cb(struct sd_node *joining,
+void sd_join_handler(const struct sd_node *joined,
+ const struct sd_node *members,
+ size_t nr_members, enum cluster_join_result result,
+ const void *opaque);
+void sd_leave_handler(const struct sd_node *left, const struct sd_node *members,
+ size_t nr_members);
+void sd_notify_handler(const struct sd_node *sender, void *msg, size_t msg_len);
+bool sd_block_handler(const struct sd_node *sender);
+enum cluster_join_result sd_check_join_cb(const struct sd_node *joining,
void *opaque);
void recalculate_vnodes(struct sd_node *nodes, int nr_nodes);
diff --git a/sheep/cluster/accord.c b/sheep/cluster/accord.c
index a6edf2a..be0cf83 100644
--- a/sheep/cluster/accord.c
+++ b/sheep/cluster/accord.c
@@ -407,7 +407,7 @@ static void acrd_watch_fn(struct acrd_handle *ah, struct acrd_watch_info *info,
eventfd_write(efd, value);
}
-static int accord_join(struct sd_node *myself,
+static int accord_join(const struct sd_node *myself,
void *opaque, size_t opaque_len)
{
this_node = *myself;
diff --git a/sheep/cluster/corosync.c b/sheep/cluster/corosync.c
index e238145..a607bae 100644
--- a/sheep/cluster/corosync.c
+++ b/sheep/cluster/corosync.c
@@ -263,7 +263,7 @@ eq_check:
return -1;
}
-static void build_node_list(struct cpg_node *nodes, size_t nr_nodes,
+static void build_node_list(const struct cpg_node *nodes, size_t nr_nodes,
struct sd_node *entries)
{
int i;
@@ -681,7 +681,7 @@ static void cdrv_cpg_confchg(cpg_handle_t handle,
__corosync_dispatch();
}
-static int corosync_join(struct sd_node *myself,
+static int corosync_join(const struct sd_node *myself,
void *opaque, size_t opaque_len)
{
int ret;
diff --git a/sheep/cluster/local.c b/sheep/cluster/local.c
index 27b3cfe..20ce325 100644
--- a/sheep/cluster/local.c
+++ b/sheep/cluster/local.c
@@ -325,7 +325,7 @@ static void check_pids(void *arg)
/* Local driver APIs */
-static int local_join(struct sd_node *myself,
+static int local_join(const struct sd_node *myself,
void *opaque, size_t opaque_len)
{
this_node.node = *myself;
diff --git a/sheep/cluster/zookeeper.c b/sheep/cluster/zookeeper.c
index 9c87c89..388bebc 100644
--- a/sheep/cluster/zookeeper.c
+++ b/sheep/cluster/zookeeper.c
@@ -578,7 +578,7 @@ static void watcher(zhandle_t *zh, int type, int state, const char *path,
eventfd_write(efd, value);
}
-static int zk_join(struct sd_node *myself,
+static int zk_join(const struct sd_node *myself,
void *opaque, size_t opaque_len)
{
int rc;
diff --git a/sheep/farm/farm.c b/sheep/farm/farm.c
index 58a26b6..6eee745 100644
--- a/sheep/farm/farm.c
+++ b/sheep/farm/farm.c
@@ -26,7 +26,7 @@
char farm_obj_dir[PATH_MAX];
char farm_dir[PATH_MAX];
-static int create_directory(char *p)
+static int create_directory(const char *p)
{
int i, ret = 0;
struct strbuf buf = STRBUF_INIT;
@@ -99,7 +99,7 @@ out:
return ret;
}
-static bool is_xattr_enabled(char *path)
+static bool is_xattr_enabled(const char *path)
{
int ret, dummy;
@@ -108,7 +108,7 @@ static bool is_xattr_enabled(char *path)
return !(ret == -1 && errno == ENOTSUP);
}
-static int farm_init(char *p)
+static int farm_init(const char *p)
{
dprintf("use farm store driver\n");
if (create_directory(p) < 0)
@@ -130,7 +130,7 @@ err:
return SD_RES_EIO;
}
-static int farm_snapshot(struct siocb *iocb)
+static int farm_snapshot(const struct siocb *iocb)
{
unsigned char snap_sha1[SHA1_LEN];
unsigned char trunk_sha1[SHA1_LEN];
@@ -236,7 +236,7 @@ out:
return ret;
}
-static int farm_restore(struct siocb *iocb)
+static int farm_restore(const struct siocb *iocb)
{
int ret = SD_RES_EIO, epoch = iocb->epoch;
diff --git a/sheep/gateway.c b/sheep/gateway.c
index 739c324..2c0cb89 100644
--- a/sheep/gateway.c
+++ b/sheep/gateway.c
@@ -33,8 +33,8 @@ int gateway_read_obj(struct request *req)
int i, ret = SD_RES_SUCCESS;
struct sd_req fwd_hdr;
struct sd_rsp *rsp = (struct sd_rsp *)&fwd_hdr;
- struct sd_vnode *v;
- struct sd_vnode *obj_vnodes[SD_MAX_COPIES];
+ const struct sd_vnode *v;
+ const struct sd_vnode *obj_vnodes[SD_MAX_COPIES];
uint64_t oid = req->rq.obj.oid;
int nr_copies, j;
@@ -97,7 +97,7 @@ out:
struct write_info_entry {
struct pollfd pfd;
- struct node_id *nid;
+ const struct node_id *nid;
struct sockfd *sfd;
};
@@ -217,7 +217,7 @@ static inline void write_info_init(struct write_info *wi)
}
static inline void
-write_info_advance(struct write_info *wi, struct node_id *nid,
+write_info_advance(struct write_info *wi, const struct node_id *nid,
struct sockfd *sfd)
{
wi->ent[wi->nr_sent].nid = nid;
@@ -228,10 +228,10 @@ write_info_advance(struct write_info *wi, struct node_id *nid,
}
static int init_target_nodes(struct request *req, bool all_node,
- uint64_t oid, struct sd_node **target_nodes)
+ uint64_t oid, const struct sd_node **target_nodes)
{
int i, nr_to_send;
- struct vnode_info *vinfo = req->vinfo;
+ const struct vnode_info *vinfo = req->vinfo;
if (all_node) {
nr_to_send = vinfo->nr_nodes;
@@ -255,9 +255,9 @@ static int gateway_forward_request(struct request *req, bool all_node)
uint64_t oid = req->rq.obj.oid;
int nr_to_send;
struct write_info wi;
- struct sd_op_template *op;
+ const struct sd_op_template *op;
struct sd_req hdr;
- struct sd_node *target_nodes[SD_MAX_NODES];
+ const struct sd_node *target_nodes[SD_MAX_NODES];
dprintf("%"PRIx64"\n", oid);
@@ -270,7 +270,7 @@ static int gateway_forward_request(struct request *req, bool all_node)
for (i = 0; i < nr_to_send; i++) {
struct sockfd *sfd;
- struct node_id *nid;
+ const struct node_id *nid;
if (node_is_local(target_nodes[i])) {
local = i;
diff --git a/sheep/group.c b/sheep/group.c
index 517fd68..8f16bc4 100644
--- a/sheep/group.c
+++ b/sheep/group.c
@@ -55,7 +55,7 @@ static size_t get_join_message_size(struct join_message *jm)
return sizeof(*jm) + jm->nr_nodes * sizeof(jm->nodes[0]);
}
-static int get_zones_nr_from(struct sd_node *nodes, int nr_nodes)
+static int get_zones_nr_from(const struct sd_node *nodes, int nr_nodes)
{
int nr_zones = 0, i, j;
uint32_t zones[SD_MAX_COPIES];
@@ -162,7 +162,7 @@ void put_vnode_info(struct vnode_info *vnode_info)
}
}
-static struct vnode_info *alloc_vnode_info(struct sd_node *nodes,
+static struct vnode_info *alloc_vnode_info(const struct sd_node *nodes,
size_t nr_nodes)
{
struct vnode_info *vnode_info;
@@ -283,7 +283,7 @@ static void cluster_op_done(struct work *work)
* Must run in the main thread as it accesses unlocked state like
* sys->pending_list.
*/
-bool sd_block_handler(struct sd_node *sender)
+bool sd_block_handler(const struct sd_node *sender)
{
struct request *req;
@@ -351,8 +351,8 @@ static int get_nodes_nr_epoch(uint32_t epoch)
return epoch_log_read(epoch, nodes, sizeof(nodes));
}
-static struct sd_node *find_entry_list(struct sd_node *entry,
- struct list_head *head)
+static const struct sd_node *find_entry_list(const struct sd_node *entry,
+ struct list_head *head)
{
struct node *n;
list_for_each_entry(n, head, list)
@@ -363,8 +363,8 @@ static struct sd_node *find_entry_list(struct sd_node *entry,
}
-static struct sd_node *find_entry_epoch(struct sd_node *entry,
- uint32_t epoch)
+static const struct sd_node *find_entry_epoch(const struct sd_node *entry,
+ uint32_t epoch)
{
struct sd_node nodes[SD_MAX_NODES];
int nr, i;
@@ -387,7 +387,7 @@ static struct sd_node *find_entry_epoch(struct sd_node *entry,
* an automated restart. These nodes will become part of the cluster by
* the time it does get restarted.
*/
-static bool add_delayed_node(uint32_t epoch, struct sd_node *node)
+static bool add_delayed_node(uint32_t epoch, const struct sd_node *node)
{
struct node *n;
@@ -406,7 +406,7 @@ static bool add_delayed_node(uint32_t epoch, struct sd_node *node)
* epoch, and if so add it to the list of node expected to be present
* but failing to join.
*/
-static bool add_failed_node(uint32_t epoch, struct sd_node *node)
+static bool add_failed_node(uint32_t epoch, const struct sd_node *node)
{
struct node *n;
@@ -425,7 +425,8 @@ static bool add_failed_node(uint32_t epoch, struct sd_node *node)
* Add the failed and delayed nodes in a join message to the local
* lists of such nodes.
*/
-static void update_exceptional_node_list(uint32_t epoch, struct join_message *jm)
+static void update_exceptional_node_list(uint32_t epoch,
+ const struct join_message *jm)
{
int i;
@@ -498,8 +499,8 @@ static int cluster_sanity_check(struct join_message *jm)
return CJ_RES_SUCCESS;
}
-static int cluster_wait_for_join_check(struct sd_node *joined,
- struct join_message *jm)
+static int cluster_wait_for_join_check(const struct sd_node *joined,
+ struct join_message *jm)
{
struct sd_node local_entries[SD_MAX_NODES];
int nr, nr_local_entries, nr_failed_entries, nr_delayed_nodes;
@@ -684,8 +685,9 @@ int log_current_epoch(void)
current_vnode_info->nr_nodes);
}
-static struct vnode_info *alloc_old_vnode_info(struct sd_node *joined,
- struct sd_node *nodes, size_t nr_nodes)
+static struct vnode_info *alloc_old_vnode_info(const struct sd_node *joined,
+ const struct sd_node *nodes,
+ size_t nr_nodes)
{
struct sd_node old_nodes[SD_MAX_NODES];
size_t count = 0, i;
@@ -698,8 +700,9 @@ static struct vnode_info *alloc_old_vnode_info(struct sd_node *joined,
return alloc_vnode_info(old_nodes, count);
}
-static void finish_join(struct join_message *msg, struct sd_node *joined,
- struct sd_node *nodes, size_t nr_nodes)
+static void finish_join(const struct join_message *msg,
+ const struct sd_node *joined,
+ const struct sd_node *nodes, size_t nr_nodes)
{
sys->join_finished = true;
sys->epoch = msg->epoch;
@@ -732,7 +735,7 @@ static void finish_join(struct join_message *msg, struct sd_node *joined,
sockfd_cache_add_group(nodes, nr_nodes);
}
-static void get_vdis(struct sd_node *nodes, size_t nr_nodes)
+static void get_vdis(const struct sd_node *nodes, size_t nr_nodes)
{
int array_len = nr_nodes * sizeof(struct sd_node);
struct get_vdis_work *w;
@@ -786,8 +789,9 @@ void recalculate_vnodes(struct sd_node *nodes, int nr_nodes)
}
}
-static void update_cluster_info(struct join_message *msg,
- struct sd_node *joined, struct sd_node *nodes,
+static void update_cluster_info(const struct join_message *msg,
+ const struct sd_node *joined,
+ const struct sd_node *nodes,
size_t nr_nodes)
{
struct vnode_info *old_vnode_info;
@@ -855,10 +859,11 @@ static void update_cluster_info(struct join_message *msg,
* Must run in the main thread as it accesses unlocked state like
* sys->pending_list.
*/
-void sd_notify_handler(struct sd_node *sender, void *data, size_t data_len)
+void sd_notify_handler(const struct sd_node *sender, void *data,
+ size_t data_len)
{
struct vdi_op_message *msg = data;
- struct sd_op_template *op = get_sd_op(msg->req.opcode);
+ const struct sd_op_template *op = get_sd_op(msg->req.opcode);
int ret = msg->rsp.result;
struct request *req = NULL;
@@ -889,7 +894,8 @@ void sd_notify_handler(struct sd_node *sender, void *data, size_t data_len)
}
}
-enum cluster_join_result sd_check_join_cb(struct sd_node *joining, void *opaque)
+enum cluster_join_result sd_check_join_cb(const struct sd_node *joining,
+ void *opaque)
{
struct join_message *jm = opaque;
char str[256];
@@ -1013,13 +1019,14 @@ static int send_join_request(struct sd_node *ent)
return ret;
}
-void sd_join_handler(struct sd_node *joined, struct sd_node *members,
- size_t nr_members, enum cluster_join_result result,
- void *opaque)
+void sd_join_handler(const struct sd_node *joined,
+ const struct sd_node *members,
+ size_t nr_members, enum cluster_join_result result,
+ const void *opaque)
{
int i;
int nr, nr_local, nr_failed, nr_delayed_nodes;
- struct join_message *jm = opaque;
+ const struct join_message *jm = opaque;
uint32_t le = get_latest_epoch();
if (node_eq(joined, &sys->this_node)) {
@@ -1098,8 +1105,8 @@ void sd_join_handler(struct sd_node *joined, struct sd_node *members,
}
}
-void sd_leave_handler(struct sd_node *left, struct sd_node *members,
- size_t nr_members)
+void sd_leave_handler(const struct sd_node *left, const struct sd_node *members,
+ size_t nr_members)
{
struct vnode_info *old_vnode_info;
int i;
diff --git a/sheep/object_cache.c b/sheep/object_cache.c
index c6c479a..ab6499d 100644
--- a/sheep/object_cache.c
+++ b/sheep/object_cache.c
@@ -99,7 +99,7 @@ static inline int mark_cache_in_reclaim(void)
return uatomic_cmpxchg(&sys_cache.in_reclaim, 0, 1);
}
-static inline bool entry_is_dirty(struct object_cache_entry *entry)
+static inline bool entry_is_dirty(const struct object_cache_entry *entry)
{
return !!entry->bmap;
}
@@ -110,7 +110,7 @@ static inline int hash(uint64_t vid)
}
/* We should always use this helper to get entry idx */
-static inline uint32_t entry_idx(struct object_cache_entry *entry)
+static inline uint32_t entry_idx(const struct object_cache_entry *entry)
{
return entry->idx & ~CACHE_INDEX_MASK;
}
@@ -951,7 +951,7 @@ out:
return ret;
}
-bool bypass_object_cache(struct request *req)
+bool bypass_object_cache(const struct request *req)
{
uint64_t oid = req->rq.obj.oid;
@@ -1096,7 +1096,7 @@ int object_cache_read(uint64_t oid, char *data, unsigned int datalen,
return ret;
}
-int object_cache_flush_vdi(struct request *req)
+int object_cache_flush_vdi(const struct request *req)
{
uint32_t vid = oid_to_vid(req->rq.obj.oid);
struct object_cache *cache;
@@ -1110,7 +1110,7 @@ int object_cache_flush_vdi(struct request *req)
return object_cache_push(cache);
}
-int object_cache_flush_and_del(struct request *req)
+int object_cache_flush_and_del(const struct request *req)
{
uint32_t vid = oid_to_vid(req->rq.obj.oid);
struct object_cache *cache;
diff --git a/sheep/ops.c b/sheep/ops.c
index 1e2539c..902de88 100644
--- a/sheep/ops.c
+++ b/sheep/ops.c
@@ -1172,7 +1172,7 @@ static struct sd_op_template sd_ops[] = {
},
};
-struct sd_op_template *get_sd_op(uint8_t opcode)
+const struct sd_op_template *get_sd_op(uint8_t opcode)
{
if (sd_ops[opcode].type == 0)
return NULL;
@@ -1180,42 +1180,42 @@ struct sd_op_template *get_sd_op(uint8_t opcode)
return sd_ops + opcode;
}
-const char *op_name(struct sd_op_template *op)
+const char *op_name(const struct sd_op_template *op)
{
return op->name;
}
-bool is_cluster_op(struct sd_op_template *op)
+bool is_cluster_op(const struct sd_op_template *op)
{
return op->type == SD_OP_TYPE_CLUSTER;
}
-bool is_local_op(struct sd_op_template *op)
+bool is_local_op(const struct sd_op_template *op)
{
return op->type == SD_OP_TYPE_LOCAL;
}
-bool is_peer_op(struct sd_op_template *op)
+bool is_peer_op(const struct sd_op_template *op)
{
return op->type == SD_OP_TYPE_PEER;
}
-bool is_gateway_op(struct sd_op_template *op)
+bool is_gateway_op(const struct sd_op_template *op)
{
return op->type == SD_OP_TYPE_GATEWAY;
}
-bool is_force_op(struct sd_op_template *op)
+bool is_force_op(const struct sd_op_template *op)
{
return !!op->force;
}
-bool has_process_work(struct sd_op_template *op)
+bool has_process_work(const struct sd_op_template *op)
{
return !!op->process_work;
}
-bool has_process_main(struct sd_op_template *op)
+bool has_process_main(const struct sd_op_template *op)
{
return !!op->process_main;
}
@@ -1239,13 +1239,13 @@ void do_process_work(struct work *work)
req->rp.result = ret;
}
-int do_process_main(struct sd_op_template *op, const struct sd_req *req,
+int do_process_main(const struct sd_op_template *op, const struct sd_req *req,
struct sd_rsp *rsp, void *data)
{
return op->process_main(req, rsp, data);
}
-int sheep_do_op_work(struct sd_op_template *op, struct request *req)
+int sheep_do_op_work(const struct sd_op_template *op, struct request *req)
{
return op->process_work(req);
}
diff --git a/sheep/plain_store.c b/sheep/plain_store.c
index 6716061..9ff2fc3 100644
--- a/sheep/plain_store.c
+++ b/sheep/plain_store.c
@@ -127,7 +127,7 @@ static int err_to_sderr(uint64_t oid, int err)
}
}
-int default_write(uint64_t oid, struct siocb *iocb)
+int default_write(uint64_t oid, const struct siocb *iocb)
{
int flags = get_open_flags(oid, false), fd, ret = SD_RES_SUCCESS;
char path[PATH_MAX];
@@ -214,7 +214,7 @@ static int init_objlist_and_vdi_bitmap(uint64_t oid, void *arg)
return SD_RES_SUCCESS;
}
-int default_init(char *p)
+int default_init(const char *p)
{
dprintf("use plain store driver\n");
@@ -230,8 +230,8 @@ int default_init(char *p)
return for_each_object_in_wd(init_objlist_and_vdi_bitmap, true, NULL);
}
-static int default_read_from_path(uint64_t oid, char *path,
- struct siocb *iocb)
+static int default_read_from_path(uint64_t oid, const char *path,
+ const struct siocb *iocb)
{
int flags = get_open_flags(oid, false), fd, ret = SD_RES_SUCCESS;
ssize_t size;
@@ -254,7 +254,7 @@ static int default_read_from_path(uint64_t oid, char *path,
return ret;
}
-int default_read(uint64_t oid, struct siocb *iocb)
+int default_read(uint64_t oid, const struct siocb *iocb)
{
int ret;
char path[PATH_MAX];
@@ -292,7 +292,7 @@ int prealloc(int fd, uint32_t size)
return 0;
}
-int default_create_and_write(uint64_t oid, struct siocb *iocb)
+int default_create_and_write(uint64_t oid, const struct siocb *iocb)
{
char path[PATH_MAX], tmp_path[PATH_MAX];
int flags = get_open_flags(oid, true);
@@ -351,7 +351,7 @@ out:
return ret;
}
-int default_link(uint64_t oid, struct siocb *iocb, uint32_t tgt_epoch)
+int default_link(uint64_t oid, uint32_t tgt_epoch)
{
char path[PATH_MAX], stale_path[PATH_MAX];
@@ -374,9 +374,9 @@ static bool oid_stale(uint64_t oid)
{
int i, nr_copies;
struct vnode_info *vinfo;
- struct sd_vnode *v;
+ const struct sd_vnode *v;
bool ret = true;
- struct sd_vnode *obj_vnodes[SD_MAX_COPIES];
+ const struct sd_vnode *obj_vnodes[SD_MAX_COPIES];
vinfo = get_vnode_info();
nr_copies = get_obj_copy_number(oid, vinfo->nr_zones);
@@ -425,7 +425,8 @@ static int check_stale_objects(uint64_t oid, void *arg)
return SD_RES_SUCCESS;
}
-int default_end_recover(uint32_t old_epoch, struct vnode_info *old_vnode_info)
+int default_end_recover(uint32_t old_epoch,
+ const struct vnode_info *old_vnode_info)
{
if (old_epoch == 0)
return SD_RES_SUCCESS;
diff --git a/sheep/recovery.c b/sheep/recovery.c
index 6251040..f9f36f7 100644
--- a/sheep/recovery.c
+++ b/sheep/recovery.c
@@ -60,7 +60,8 @@ static int obj_cmp(const void *oid1, const void *oid2)
return 0;
}
-static int recover_object_from_replica(uint64_t oid, struct sd_vnode *vnode,
+static int recover_object_from_replica(uint64_t oid,
+ const struct sd_vnode *vnode,
uint32_t epoch, uint32_t tgt_epoch)
{
struct sd_req hdr;
@@ -70,14 +71,12 @@ static int recover_object_from_replica(uint64_t oid, struct sd_vnode *vnode,
void *buf = NULL;
struct siocb iocb = { 0 };
- rlen = get_objsize(oid);
if (vnode_is_local(vnode)) {
- iocb.epoch = epoch;
- iocb.length = rlen;
- ret = sd_store->link(oid, &iocb, tgt_epoch);
+ ret = sd_store->link(oid, tgt_epoch);
goto out;
}
+ rlen = get_objsize(oid);
buf = valloc(rlen);
if (!buf) {
eprintf("%m\n");
@@ -113,8 +112,8 @@ out:
* A virtual node that does not match any node in current node list
* means the node has left the cluster, then it's an invalid virtual node.
*/
-static bool is_invalid_vnode(struct sd_vnode *entry, struct sd_node *nodes,
- int nr_nodes)
+static bool is_invalid_vnode(const struct sd_vnode *entry,
+ struct sd_node *nodes, int nr_nodes)
{
if (bsearch(entry, nodes, nr_nodes, sizeof(struct sd_node),
node_id_cmp))
@@ -143,9 +142,9 @@ again:
/* Let's do a breadth-first search */
nr_copies = get_obj_copy_number(oid, old->nr_zones);
for (i = 0; i < nr_copies; i++) {
- struct sd_vnode *tgt_vnode = oid_to_vnode(old->vnodes,
- old->nr_vnodes,
- oid, i);
+ const struct sd_vnode *tgt_vnode;
+
+ tgt_vnode = oid_to_vnode(old->vnodes,old->nr_vnodes, oid, i);
if (is_invalid_vnode(tgt_vnode, rw->cur_vinfo->nodes,
rw->cur_vinfo->nr_nodes))
@@ -534,7 +533,7 @@ static int fetch_object_list(struct sd_node *e, uint32_t epoch,
static void screen_object_list(struct recovery_work *rw,
uint64_t *oids, int nr_oids)
{
- struct sd_vnode *vnodes[SD_MAX_COPIES];
+ const struct sd_vnode *vnodes[SD_MAX_COPIES];
int old_count = rw->count;
int nr_objs;
int i, j;
diff --git a/sheep/request.c b/sheep/request.c
index 5922bed..1f9e335 100644
--- a/sheep/request.c
+++ b/sheep/request.c
@@ -26,7 +26,7 @@ static void requeue_request(struct request *req);
static bool is_access_local(struct request *req, uint64_t oid)
{
- struct sd_vnode *obj_vnodes[SD_MAX_COPIES];
+ const struct sd_vnode *obj_vnodes[SD_MAX_COPIES];
int nr_copies;
int i;
diff --git a/sheep/sheep_priv.h b/sheep/sheep_priv.h
index 3251816..0480e26 100644
--- a/sheep/sheep_priv.h
+++ b/sheep/sheep_priv.h
@@ -41,7 +41,7 @@ struct request {
struct sd_req rq;
struct sd_rsp rp;
- struct sd_op_template *op;
+ const struct sd_op_template *op;
void *data;
unsigned int data_length;
@@ -136,7 +136,7 @@ struct siocb {
};
struct vdi_iocb {
- char *name;
+ const char *name;
uint32_t data_len;
uint64_t size;
uint32_t base_vid;
@@ -147,34 +147,36 @@ struct vdi_iocb {
struct store_driver {
struct list_head list;
const char *name;
- int (*init)(char *path);
+ int (*init)(const char *path);
bool (*exist)(uint64_t oid);
/* create_and_write must be an atomic operation*/
- int (*create_and_write)(uint64_t oid, struct siocb *);
- int (*write)(uint64_t oid, struct siocb *);
- int (*read)(uint64_t oid, struct siocb *);
+ int (*create_and_write)(uint64_t oid, const struct siocb *);
+ int (*write)(uint64_t oid, const struct siocb *);
+ int (*read)(uint64_t oid, const struct siocb *);
int (*format)(void);
int (*remove_object)(uint64_t oid);
/* Operations in recovery */
- int (*link)(uint64_t oid, struct siocb *, uint32_t tgt_epoch);
- int (*begin_recover)(struct siocb *);
- int (*end_recover)(uint32_t epoch, struct vnode_info *old_vnode_info);
+ int (*link)(uint64_t oid, uint32_t tgt_epoch);
+ int (*begin_recover)(const struct siocb *);
+ int (*end_recover)(uint32_t epoch,
+ const struct vnode_info *old_vnode_info);
int (*purge_obj)(void);
/* Operations for snapshot */
- int (*snapshot)(struct siocb *);
+ int (*snapshot)(const struct siocb *);
int (*cleanup)(void);
- int (*restore)(struct siocb *);
+ int (*restore)(const struct siocb *);
int (*get_snap_file)(struct siocb *);
int (*flush)(void);
};
-int default_init(char *p);
+int default_init(const char *p);
bool default_exist(uint64_t oid);
-int default_create_and_write(uint64_t oid, struct siocb *iocb);
-int default_write(uint64_t oid, struct siocb *iocb);
-int default_read(uint64_t oid, struct siocb *iocb);
-int default_link(uint64_t oid, struct siocb *iocb, uint32_t tgt_epoch);
-int default_end_recover(uint32_t old_epoch, struct vnode_info *old_vnode_info);
+int default_create_and_write(uint64_t oid, const struct siocb *iocb);
+int default_write(uint64_t oid, const struct siocb *iocb);
+int default_read(uint64_t oid, const struct siocb *iocb);
+int default_link(uint64_t oid, uint32_t tgt_epoch);
+int default_end_recover(uint32_t old_epoch,
+ const struct vnode_info *old_vnode_info);
int default_cleanup(void);
int default_format(void);
int default_remove_object(uint64_t oid);
@@ -231,8 +233,8 @@ int add_vdi(struct vdi_iocb *iocb, uint32_t *new_vid);
int del_vdi(struct request *req, char *data, int data_len, uint32_t *vid,
uint32_t snapid, unsigned int *nr_copies);
-int lookup_vdi(char *name, char *tag, uint32_t *vid, uint32_t snapid,
- unsigned int *nr_copies, uint64_t *ctime);
+int lookup_vdi(const char *name, const char *tag, uint32_t *vid,
+ uint32_t snapid, unsigned int *nr_copies, uint64_t *ctime);
int read_vdis(char *data, int len, unsigned int *rsp_len);
@@ -280,7 +282,6 @@ int get_cluster_space(uint64_t *space);
int store_file_write(void *buffer, size_t len);
void *store_file_read(void);
-int get_max_nr_copies_from(struct sd_node *entries, int nr);
int epoch_log_read(uint32_t epoch, struct sd_node *nodes, int len);
int epoch_log_read_remote(uint32_t epoch, struct sd_node *nodes, int len);
@@ -317,19 +318,19 @@ void put_request(struct request *req);
/* Operations */
-struct sd_op_template *get_sd_op(uint8_t opcode);
-const char *op_name(struct sd_op_template *op);
-bool is_cluster_op(struct sd_op_template *op);
-bool is_local_op(struct sd_op_template *op);
-bool is_peer_op(struct sd_op_template *op);
-bool is_gateway_op(struct sd_op_template *op);
-bool is_force_op(struct sd_op_template *op);
-bool has_process_work(struct sd_op_template *op);
-bool has_process_main(struct sd_op_template *op);
+const struct sd_op_template *get_sd_op(uint8_t opcode);
+const char *op_name(const struct sd_op_template *op);
+bool is_cluster_op(const struct sd_op_template *op);
+bool is_local_op(const struct sd_op_template *op);
+bool is_peer_op(const struct sd_op_template *op);
+bool is_gateway_op(const struct sd_op_template *op);
+bool is_force_op(const struct sd_op_template *op);
+bool has_process_work(const struct sd_op_template *op);
+bool has_process_main(const struct sd_op_template *op);
void do_process_work(struct work *work);
-int do_process_main(struct sd_op_template *op, const struct sd_req *req,
+int do_process_main(const struct sd_op_template *op, const struct sd_req *req,
struct sd_rsp *rsp, void *data);
-int sheep_do_op_work(struct sd_op_template *op, struct request *req);
+int sheep_do_op_work(const struct sd_op_template *op, struct request *req);
int gateway_to_peer_opcode(int opcode);
/* Journal */
@@ -338,19 +339,19 @@ struct jrnl_descriptor *jrnl_begin(const void *buf, size_t count, off_t offset,
int jrnl_end(struct jrnl_descriptor *jd);
int jrnl_recover(const char *jrnl_dir);
-static inline bool is_myself(uint8_t *addr, uint16_t port)
+static inline bool is_myself(const uint8_t *addr, uint16_t port)
{
return (memcmp(addr, sys->this_node.nid.addr,
sizeof(sys->this_node.nid.addr)) == 0) &&
port == sys->this_node.nid.port;
}
-static inline bool vnode_is_local(struct sd_vnode *v)
+static inline bool vnode_is_local(const struct sd_vnode *v)
{
return is_myself(v->nid.addr, v->nid.port);
}
-static inline bool node_is_local(struct sd_node *n)
+static inline bool node_is_local(const struct sd_node *n)
{
return is_myself(n->nid.addr, n->nid.port);
}
@@ -373,7 +374,7 @@ int default_flush(void);
/* object_cache */
-bool bypass_object_cache(struct request *req);
+bool bypass_object_cache(const struct request *req);
bool object_is_cached(uint64_t oid);
void object_cache_try_to_reclaim(void);
@@ -382,8 +383,8 @@ int object_cache_write(uint64_t oid, char *data, unsigned int datalen,
uint64_t offset, uint16_t flags, bool create);
int object_cache_read(uint64_t oid, char *data, unsigned int datalen,
uint64_t offset);
-int object_cache_flush_vdi(struct request *req);
-int object_cache_flush_and_del(struct request *req);
+int object_cache_flush_vdi(const struct request *req);
+int object_cache_flush_and_del(const struct request *req);
void object_cache_delete(uint32_t vid);
int object_cache_init(const char *p);
void object_cache_remove(uint64_t oid);
@@ -397,14 +398,14 @@ struct sockfd {
int idx;
};
-void sockfd_cache_del(struct node_id *);
-void sockfd_cache_add(struct node_id *);
-void sockfd_cache_add_group(struct sd_node *nodes, int nr);
+void sockfd_cache_del(const struct node_id *);
+void sockfd_cache_add(const struct node_id *);
+void sockfd_cache_add_group(const struct sd_node *nodes, int nr);
-struct sockfd *sheep_get_sockfd(struct node_id *);
-void sheep_put_sockfd(struct node_id *, struct sockfd *);
-void sheep_del_sockfd(struct node_id *, struct sockfd *);
-int sheep_exec_req(struct node_id *nid, struct sd_req *hdr, void *data);
+struct sockfd *sheep_get_sockfd(const struct node_id *);
+void sheep_put_sockfd(const struct node_id *, struct sockfd *);
+void sheep_del_sockfd(const struct node_id *, struct sockfd *);
+int sheep_exec_req(const struct node_id *nid, struct sd_req *hdr, void *data);
static inline bool is_object_cache_enabled(void)
{
diff --git a/sheep/sockfd_cache.c b/sheep/sockfd_cache.c
index 85139cb..6e5e289 100644
--- a/sheep/sockfd_cache.c
+++ b/sheep/sockfd_cache.c
@@ -101,7 +101,7 @@ sockfd_cache_insert(struct sockfd_cache_entry *new)
return NULL; /* insert successfully */
}
-static struct sockfd_cache_entry *sockfd_cache_search(struct node_id *nid)
+static struct sockfd_cache_entry *sockfd_cache_search(const struct node_id *nid)
{
struct rb_node *n = sockfd_cache.root.rb_node;
struct sockfd_cache_entry *t;
@@ -141,7 +141,7 @@ static inline int get_free_slot(struct sockfd_cache_entry *entry)
*
* If no free slot available, this typically means we should use short FD.
*/
-static struct sockfd_cache_entry *sockfd_cache_grab(struct node_id *nid,
+static struct sockfd_cache_entry *sockfd_cache_grab(const struct node_id *nid,
char *name, int *ret_idx)
{
struct sockfd_cache_entry *entry;
@@ -185,7 +185,7 @@ static inline void destroy_all_slots(struct sockfd_cache_entry *entry)
* the victim node will finally find itself talking to a dead node and call
* sheep_del_fd() to delete this node from the cache.
*/
-static bool sockfd_cache_destroy(struct node_id *nid)
+static bool sockfd_cache_destroy(const struct node_id *nid)
{
struct sockfd_cache_entry *entry;
@@ -214,7 +214,7 @@ false_out:
}
/* When node craches, we should delete it from the cache */
-void sockfd_cache_del(struct node_id *nid)
+void sockfd_cache_del(const struct node_id *nid)
{
char name[INET6_ADDRSTRLEN];
int n;
@@ -227,7 +227,7 @@ void sockfd_cache_del(struct node_id *nid)
dprintf("%s:%d, count %d\n", name, nid->port, n);
}
-static void sockfd_cache_add_nolock(struct node_id *nid)
+static void sockfd_cache_add_nolock(const struct node_id *nid)
{
struct sockfd_cache_entry *new = xmalloc(sizeof(*new));
int i;
@@ -245,9 +245,9 @@ static void sockfd_cache_add_nolock(struct node_id *nid)
}
/* Add group of nodes to the cache */
-void sockfd_cache_add_group(struct sd_node *nodes, int nr)
+void sockfd_cache_add_group(const struct sd_node *nodes, int nr)
{
- struct sd_node *p;
+ const struct sd_node *p;
dprintf("%d\n", nr);
pthread_rwlock_wrlock(&sockfd_cache.lock);
@@ -259,7 +259,7 @@ void sockfd_cache_add_group(struct sd_node *nodes, int nr)
}
/* Add one node to the cache means we can do caching tricks on this node */
-void sockfd_cache_add(struct node_id *nid)
+void sockfd_cache_add(const struct node_id *nid)
{
struct sockfd_cache_entry *new;
char name[INET6_ADDRSTRLEN];
@@ -333,7 +333,7 @@ static inline void check_idx(int idx)
queue_work(sys->sockfd_wqueue, w);
}
-static struct sockfd *sockfd_cache_get(struct node_id *nid, char *name)
+static struct sockfd *sockfd_cache_get(const struct node_id *nid, char *name)
{
struct sockfd_cache_entry *entry;
struct sockfd *sfd;
@@ -366,7 +366,7 @@ out:
return sfd;
}
-static void sockfd_cache_put(struct node_id *nid, int idx)
+static void sockfd_cache_put(const struct node_id *nid, int idx)
{
struct sockfd_cache_entry *entry;
char name[INET6_ADDRSTRLEN];
@@ -393,7 +393,7 @@ static void sockfd_cache_put(struct node_id *nid, int idx)
*
* ret_idx is opaque to the caller, -1 indicates it is a short FD.
*/
-struct sockfd *sheep_get_sockfd(struct node_id *nid)
+struct sockfd *sheep_get_sockfd(const struct node_id *nid)
{
char name[INET6_ADDRSTRLEN];
struct sockfd *sfd;
@@ -429,7 +429,7 @@ struct sockfd *sheep_get_sockfd(struct node_id *nid)
* sheep_get_sockfd()
*/
-void sheep_put_sockfd(struct node_id *nid, struct sockfd *sfd)
+void sheep_put_sockfd(const struct node_id *nid, struct sockfd *sfd)
{
if (sfd->idx == -1) {
dprintf("%d\n", sfd->fd);
@@ -449,7 +449,7 @@ void sheep_put_sockfd(struct node_id *nid, struct sockfd *sfd)
* this vnode in the cache.
* If it is a short FD, just close it.
*/
-void sheep_del_sockfd(struct node_id *nid, struct sockfd *sfd)
+void sheep_del_sockfd(const struct node_id *nid, struct sockfd *sfd)
{
if (sfd->idx == -1) {
dprintf("%d\n", sfd->fd);
@@ -463,7 +463,7 @@ void sheep_del_sockfd(struct node_id *nid, struct sockfd *sfd)
free(sfd);
}
-int sheep_exec_req(struct node_id *nid, struct sd_req *hdr, void *buf)
+int sheep_exec_req(const struct node_id *nid, struct sd_req *hdr, void *buf)
{
struct sd_rsp *rsp = (struct sd_rsp *)hdr;
struct sockfd *sfd;
diff --git a/sheep/vdi.c b/sheep/vdi.c
index 45219ed..6613db8 100644
--- a/sheep/vdi.c
+++ b/sheep/vdi.c
@@ -201,7 +201,7 @@ static int create_vdi_obj(struct vdi_iocb *iocb, uint32_t new_vid,
struct timeval tv;
int ret = SD_RES_NO_MEM;
unsigned long block_size = SD_DATA_OBJ_SIZE;
- char *name = iocb->name;
+ const char *name = iocb->name;
new = zalloc(sizeof(*new));
if (!new) {
@@ -314,10 +314,11 @@ out:
return ret;
}
-static int find_first_vdi(unsigned long start, unsigned long end, char *name,
- char *tag, uint32_t snapid, uint32_t *vid,
- unsigned long *deleted_nr, uint32_t *next_snap,
- unsigned int *inode_nr_copies, uint64_t *create_time)
+static int find_first_vdi(unsigned long start, unsigned long end,
+ const char *name, const char *tag, uint32_t snapid,
+ uint32_t *vid, unsigned long *deleted_nr,
+ uint32_t *next_snap, unsigned int *inode_nr_copies,
+ uint64_t *create_time)
{
struct sheepdog_inode *inode = NULL;
unsigned long i;
@@ -378,10 +379,11 @@ out:
return ret;
}
-static int do_lookup_vdi(char *name, int namelen, uint32_t *vid, char *tag,
- uint32_t snapid, uint32_t *next_snapid, unsigned long *right_nr,
- unsigned long *deleted_nr, unsigned int *nr_copies,
- uint64_t *create_time)
+static int do_lookup_vdi(const char *name, int namelen, uint32_t *vid,
+ const char *tag, uint32_t snapid,
+ uint32_t *next_snapid, unsigned long *right_nr,
+ unsigned long *deleted_nr, unsigned int *nr_copies,
+ uint64_t *create_time)
{
int ret;
unsigned long nr, start_nr;
@@ -425,8 +427,8 @@ right_side:
}
}
-int lookup_vdi(char *name, char *tag, uint32_t *vid, uint32_t snapid,
- unsigned int *nr_copies, uint64_t *create_time)
+int lookup_vdi(const char *name, const char *tag, uint32_t *vid,
+ uint32_t snapid, unsigned int *nr_copies, uint64_t *create_time)
{
uint32_t dummy0;
unsigned long dummy1, dummy2;
@@ -443,7 +445,7 @@ int add_vdi(struct vdi_iocb *iocb, uint32_t *new_vid)
unsigned long nr, deleted_nr = SD_NR_VDIS, right_nr = SD_NR_VDIS;
unsigned int dummy;
int ret;
- char *name;
+ const char *name;
if (iocb->data_len != SD_MAX_VDI_LEN)
return SD_RES_INVALID_PARMS;
@@ -490,7 +492,7 @@ static int start_deletion(struct request *req, uint32_t vid);
int del_vdi(struct request *req, char *data, int data_len,
uint32_t *vid, uint32_t snapid, unsigned int *nr_copies)
{
- char *name = data, *tag;
+ const char *name = data, *tag;
uint32_t dummy0;
unsigned long dummy1, dummy2;
int ret;
--
1.7.2.5
More information about the sheepdog
mailing list