At Tue, 23 Jun 2015 22:50:37 +0900,
Hitoshi Mitake wrote:
> 
> Signed-off-by: Hitoshi Mitake <[email protected]>
> ---
>  sheep/group.c | 36 ++++++++++--------------------------
>  1 file changed, 10 insertions(+), 26 deletions(-)

Applied this series.

Thanks,
Hitoshi

> 
> diff --git a/sheep/group.c b/sheep/group.c
> index dd73d28..936695f 100644
> --- a/sheep/group.c
> +++ b/sheep/group.c
> @@ -691,45 +691,32 @@ struct cinfo_collection_work {
>       int epoch;
>       struct vnode_info *members;
>  
> -     struct vdi_state *result;
> +     struct vdi_state result;
>       uint32_t next_vid;
>  };
>  
>  static struct cinfo_collection_work *collect_work;
>  
> -static struct vdi_state *do_cinfo_collection_work(uint32_t epoch,
> -                                               uint32_t vid,
> -                                               struct sd_node *n)
> +static int do_cinfo_collection_work(uint32_t epoch, uint32_t vid,
> +                                 struct sd_node *n, struct vdi_state *result)
>  {
> -     struct vdi_state *vs = NULL;
>       struct sd_req hdr;
> -     int ret;
> -
> -     vs = xzalloc(sizeof(*vs));
>  
>       sd_init_req(&hdr, SD_OP_VDI_STATE_CHECKPOINT_CTL);
>       hdr.vdi_state_checkpoint.get = 1;
>       hdr.vdi_state_checkpoint.tgt_epoch = epoch;
>       hdr.vdi_state_checkpoint.vid = vid;
> -     hdr.data_length = sizeof(*vs);
> -
> -     ret = sheep_exec_req(&n->nid, &hdr, (char *)vs);
> -     if (ret == SD_RES_SUCCESS) {
> -             sd_debug("succeed to obtain checkpoint of vdi states");
> -             return vs;
> -     }
> +     hdr.data_length = sizeof(*result);
>  
> -     sd_err("failed to obtain checkpoint of vdi states from node %s",
> -            node_to_str(n));
> -     return NULL;
> +     return sheep_exec_req(&n->nid, &hdr, (char *)result);
>  }
>  
>  static void cinfo_collection_work(struct work *work)
>  {
> -     struct vdi_state *vs = NULL;
>       struct cinfo_collection_work *w =
>               container_of(work, struct cinfo_collection_work, work);
>       struct sd_node *n;
> +     int ret;
>  
>       sd_debug("start collection of cinfo, epoch: %d, vid: %"PRIx32,
>                w->epoch, w->next_vid);
> @@ -740,11 +727,10 @@ static void cinfo_collection_work(struct work *work)
>               if (node_is_local(n))
>                       continue;
>  
> -             vs = do_cinfo_collection_work(w->epoch, w->next_vid, n);
> -             if (vs) {
> -                     w->result = vs;
> +             ret = do_cinfo_collection_work(w->epoch, w->next_vid, n,
> +                                            &w->result);
> +             if (ret == SD_RES_SUCCESS)
>                       return;
> -             }
>       }
>  
>       /*
> @@ -788,11 +774,10 @@ static main_fn void cinfo_collection_done(struct work 
> *work)
>       struct cinfo_collection_work *w =
>               container_of(work, struct cinfo_collection_work, work);
>       uint32_t next_vid;
> -     struct vdi_state *vs = w->result;
> +     struct vdi_state *vs = &w->result;
>  
>       sd_assert(w == collect_work);
>  
> -
>       sd_debug("VID: %"PRIx32, vs->vid);
>       sd_debug("nr_copies: %d", vs->nr_copies);
>       sd_debug("snapshot: %d", vs->snapshot);
> @@ -803,7 +788,6 @@ static main_fn void cinfo_collection_done(struct work 
> *work)
>                addr_to_str(vs->lock_owner.addr, vs->lock_owner.port));
>  
>       apply_vdi_lock_state(vs);
> -     free(vs);
>  
>       next_vid = find_next_bit(sys->vdi_inuse, SD_NR_VDIS, w->next_vid + 1);
>       if (next_vid == SD_NR_VDIS) {
> -- 
> 1.9.1
> 
-- 
sheepdog mailing list
[email protected]
https://lists.wpkg.org/mailman/listinfo/sheepdog

Reply via email to