At Sun, 18 Apr 2010 04:16:07 +0900,
MORITA Kazutaka wrote:
> 
> Signed-off-by: MORITA Kazutaka <[email protected]>
> ---
>  collie/group.c |   11 +++++++++++
>  1 files changed, 11 insertions(+), 0 deletions(-)
> 
> diff --git a/collie/group.c b/collie/group.c
> index f3bef66..f2ec7a9 100644
> --- a/collie/group.c
> +++ b/collie/group.c
> @@ -1050,6 +1050,17 @@ static void __sd_confch(struct work *work, int idx)
>               if (node) {
>                       int nr;
>                       struct sheepdog_node_list_entry e[SD_MAX_NODES];
> +                     struct vm *vm, *n;
> +
> +                     list_for_each_entry_safe(vm, n, &sys->vm_list, list) {
> +                             if (memcmp(vm->ent.host_addr, node->ent.addr,
> +                                        sizeof(node->ent.addr)) != 0)
> +                                     continue;
> +                             if (vm->ent.host_port != node->ent.port)
> +                                     continue;
> +
> +                             list_del(&vm->list);
> +                     }
>  
>                       list_del(&node->list);
>                       free(node);

Oops, I forgot to free memory.
The correct version is as follows.
=
diff --git a/collie/group.c b/collie/group.c
index ec92836..47b61e8 100644
--- a/collie/group.c
+++ b/collie/group.c
@@ -1090,8 +1090,20 @@ static void __sd_confch(struct work *work, int idx)
                if (node) {
                        int nr;
                        struct sheepdog_node_list_entry e[SD_MAX_NODES];
+                       struct vm *vm, *n;
                        eprintf("(%d, %d) is in the sd_node_list\n", 
left_list[i].nodeid, left_list[i].pid);
 
+                       list_for_each_entry_safe(vm, n, &sys->vm_list, list) {
+                               if (memcmp(vm->ent.host_addr, node->ent.addr,
+                                          sizeof(node->ent.addr)) != 0)
+                                       continue;
+                               if (vm->ent.host_port != node->ent.port)
+                                       continue;
+
+                               list_del(&vm->list);
+                               free(vm);
+                       }
+
                        list_del(&node->list);
                        free(node);
 
-- 
sheepdog mailing list
[email protected]
http://lists.wpkg.org/mailman/listinfo/sheepdog

Reply via email to