Assuming some arguments come from sys while the epoch is passed is a bad convention. In addition the next patch will add a caller that doesn't take the nodes array from sys. Signed-off-by: Christoph Hellwig <hch at lst.de> --- sheep/group.c | 14 +++++++------- sheep/ops.c | 4 ++-- sheep/sheep_priv.h | 2 +- sheep/store.c | 8 ++++---- 4 files changed, 14 insertions(+), 14 deletions(-) Index: sheepdog/sheep/group.c =================================================================== --- sheepdog.orig/sheep/group.c 2012-05-17 09:56:30.283986140 +0200 +++ sheepdog/sheep/group.c 2012-05-17 09:56:40.431986043 +0200 @@ -628,7 +628,7 @@ static void finish_join(struct join_mess if ((msg->cluster_status == SD_STATUS_OK || msg->cluster_status == SD_STATUS_HALT) && msg->inc_epoch) - update_epoch_log(sys->epoch); + update_epoch_log(sys->epoch, sys->nodes, sys->nr_nodes); if (!sd_store && strlen((char *)msg->store)) { sd_store = find_store_driver((char *)msg->store); @@ -660,7 +660,7 @@ static void update_cluster_info(struct j msg->cluster_status == SD_STATUS_HALT) { if (msg->inc_epoch) { sys->epoch++; - update_epoch_log(sys->epoch); + update_epoch_log(sys->epoch, sys->nodes, sys->nr_nodes); update_epoch_store(sys->epoch); } /* Fresh node */ @@ -939,7 +939,7 @@ static void __sd_leave_done(struct event if (sys_can_recover()) { sys->epoch++; update_epoch_store(sys->epoch); - update_epoch_log(sys->epoch); + update_epoch_log(sys->epoch, sys->nodes, sys->nr_nodes); } update_vnode_info(); @@ -1247,10 +1247,10 @@ void sd_join_handler(struct sd_node *joi nr = nr_members; nr_leave = get_nodes_nr_from(&sys->leave_list); - dprintf("%d == %d + %d \n", nr_local, nr, nr_leave); + dprintf("%d == %d + %d\n", nr_local, nr, nr_leave); if (nr_local == nr + nr_leave) { sys_stat_set(SD_STATUS_OK); - update_epoch_log(sys->epoch); + update_epoch_log(sys->epoch, sys->nodes, sys->nr_nodes); update_epoch_store(sys->epoch); } break; @@ -1288,10 +1288,10 @@ void sd_join_handler(struct sd_node *joi nr = nr_members; nr_leave = get_nodes_nr_from(&sys->leave_list); - dprintf("%d == %d + %d \n", nr_local, nr, nr_leave); + dprintf("%d == %d + %d\n", nr_local, nr, nr_leave); if (nr_local == nr + nr_leave) { sys_stat_set(SD_STATUS_OK); - update_epoch_log(sys->epoch); + update_epoch_log(sys->epoch, sys->nodes, sys->nr_nodes); update_epoch_store(sys->epoch); } Index: sheepdog/sheep/ops.c =================================================================== --- sheepdog.orig/sheep/ops.c 2012-05-17 09:49:26.627990180 +0200 +++ sheepdog/sheep/ops.c 2012-05-17 09:56:40.431986043 +0200 @@ -251,7 +251,7 @@ static int cluster_make_fs(const struct sys->epoch = 1; sys->recovered_epoch = 1; - ret = update_epoch_log(sys->epoch); + ret = update_epoch_log(sys->epoch, sys->nodes, sys->nr_nodes); if (ret) return SD_RES_EIO; @@ -498,7 +498,7 @@ static int cluster_manual_recover(const sys->nr_copies); sys->epoch++; /* some nodes are left, so we get a new epoch */ - ret = update_epoch_log(sys->epoch); + ret = update_epoch_log(sys->epoch, sys->nodes, sys->nr_nodes); if (ret) { ret = SD_RES_EIO; sys->epoch--; Index: sheepdog/sheep/sheep_priv.h =================================================================== --- sheepdog.orig/sheep/sheep_priv.h 2012-05-17 09:56:30.283986140 +0200 +++ sheepdog/sheep/sheep_priv.h 2012-05-17 09:56:40.431986043 +0200 @@ -269,7 +269,7 @@ int read_epoch(uint32_t *epoch, uint64_t struct sd_node *entries, int *nr_entries); int update_epoch_store(uint32_t epoch); -int update_epoch_log(uint32_t epoch); +int update_epoch_log(uint32_t epoch, struct sd_node *nodes, size_t nr_nodes); int set_cluster_copies(uint8_t copies); int get_cluster_copies(uint8_t *copies); Index: sheepdog/sheep/store.c =================================================================== --- sheepdog.orig/sheep/store.c 2012-05-17 09:49:26.627990180 +0200 +++ sheepdog/sheep/store.c 2012-05-17 09:56:40.431986043 +0200 @@ -258,13 +258,13 @@ int update_epoch_store(uint32_t epoch) return 0; } -int update_epoch_log(uint32_t epoch) +int update_epoch_log(uint32_t epoch, struct sd_node *nodes, size_t nr_nodes) { int fd, ret, len; time_t t; char path[PATH_MAX]; - dprintf("update epoch: %d, %d\n", epoch, sys->nr_nodes); + dprintf("update epoch: %d, %zd\n", epoch, nr_nodes); snprintf(path, sizeof(path), "%s%08u", epoch_path, epoch); fd = open(path, O_RDWR | O_CREAT | O_DSYNC, def_fmode); @@ -273,8 +273,8 @@ int update_epoch_log(uint32_t epoch) goto err_open; } - len = sys->nr_nodes * sizeof(struct sd_node); - ret = write(fd, (char *)sys->nodes, len); + len = nr_nodes * sizeof(struct sd_node); + ret = write(fd, (char *)nodes, len); if (ret != len) goto err; |