From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lon Hohberger Date: Fri, 21 Aug 2009 11:05:28 -0400 Subject: [Cluster-devel] [PATCH] rgmanager: Fix referencing bug Message-ID: <1250867128-17470-1-git-send-email-lhh@redhat.com> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit If you placed a resource in the block and it did not have a primary="1" attribute in the resource agent metadata, rgmanager would ignore it in the resource tree when you tried to address it using the ref="" keyword. Signed-off-by: Lon Hohberger --- rgmanager/src/daemons/reslist.c | 13 ++++++++----- 1 files changed, 8 insertions(+), 5 deletions(-) diff --git a/rgmanager/src/daemons/reslist.c b/rgmanager/src/daemons/reslist.c index fac4812..7a2d69a 100644 --- a/rgmanager/src/daemons/reslist.c +++ b/rgmanager/src/daemons/reslist.c @@ -257,7 +257,8 @@ resource_t * find_resource_by_ref(resource_t **reslist, const char *type, const char *ref) { resource_t *curr; - int x; + resource_t *first_possible = NULL; + int x, flags = RA_UNIQUE|RA_REQUIRED; list_do(reslist, curr) { if (strcmp(curr->r_rule->rr_type, type)) @@ -269,16 +270,18 @@ find_resource_by_ref(resource_t **reslist, const char *type, const char *ref) */ for (x = 0; curr->r_attrs && curr->r_attrs[x].ra_name; x++) { - if (!(curr->r_attrs[x].ra_flags & RA_PRIMARY)) - continue; if (strcmp(ref, curr->r_attrs[x].ra_value)) continue; - + if (((curr->r_attrs[x].ra_flags & flags) == flags) && + !first_possible) + first_possible = curr; + if (!(curr->r_attrs[x].ra_flags & RA_PRIMARY)) + continue; return curr; } } while (!list_done(reslist, curr)); - return NULL; + return first_possible; } -- 1.6.2.5