diff options
Diffstat (limited to 'fs/dlm/member.c')
| -rw-r--r-- | fs/dlm/member.c | 19 | 
1 files changed, 13 insertions, 6 deletions
diff --git a/fs/dlm/member.c b/fs/dlm/member.c index 26133f05ae3..b128775913b 100644 --- a/fs/dlm/member.c +++ b/fs/dlm/member.c @@ -1,7 +1,7 @@  /******************************************************************************  *******************************************************************************  ** -**  Copyright (C) 2005-2008 Red Hat, Inc.  All rights reserved. +**  Copyright (C) 2005-2009 Red Hat, Inc.  All rights reserved.  **  **  This copyrighted material is made available to anyone wishing to use,  **  modify, copy, or redistribute it subject to the terms and conditions @@ -17,6 +17,7 @@  #include "recover.h"  #include "rcom.h"  #include "config.h" +#include "lowcomms.h"  static void add_ordered_member(struct dlm_ls *ls, struct dlm_member *new)  { @@ -45,9 +46,9 @@ static void add_ordered_member(struct dlm_ls *ls, struct dlm_member *new)  static int dlm_add_member(struct dlm_ls *ls, int nodeid)  {  	struct dlm_member *memb; -	int w; +	int w, error; -	memb = kzalloc(sizeof(struct dlm_member), GFP_KERNEL); +	memb = kzalloc(sizeof(struct dlm_member), ls->ls_allocation);  	if (!memb)  		return -ENOMEM; @@ -57,6 +58,12 @@ static int dlm_add_member(struct dlm_ls *ls, int nodeid)  		return w;  	} +	error = dlm_lowcomms_connect_node(nodeid); +	if (error < 0) { +		kfree(memb); +		return error; +	} +  	memb->nodeid = nodeid;  	memb->weight = w;  	add_ordered_member(ls, memb); @@ -136,7 +143,7 @@ static void make_member_array(struct dlm_ls *ls)  	ls->ls_total_weight = total; -	array = kmalloc(sizeof(int) * total, GFP_KERNEL); +	array = kmalloc(sizeof(int) * total, ls->ls_allocation);  	if (!array)  		return; @@ -219,7 +226,7 @@ int dlm_recover_members(struct dlm_ls *ls, struct dlm_recover *rv, int *neg_out)  			continue;  		log_debug(ls, "new nodeid %d is a re-added member", rv->new[i]); -		memb = kzalloc(sizeof(struct dlm_member), GFP_KERNEL); +		memb = kzalloc(sizeof(struct dlm_member), ls->ls_allocation);  		if (!memb)  			return -ENOMEM;  		memb->nodeid = rv->new[i]; @@ -334,7 +341,7 @@ int dlm_ls_start(struct dlm_ls *ls)  	int *ids = NULL, *new = NULL;  	int error, ids_count = 0, new_count = 0; -	rv = kzalloc(sizeof(struct dlm_recover), GFP_KERNEL); +	rv = kzalloc(sizeof(struct dlm_recover), ls->ls_allocation);  	if (!rv)  		return -ENOMEM;  |