diff options
author | Prasanna Kumar Kalever <prasanna.kalever@redhat.com> | 2016-05-01 13:53:47 +0530 |
---|---|---|
committer | Atin Mukherjee <amukherj@redhat.com> | 2016-05-01 20:53:04 -0700 |
commit | dc6178714cd84d3de894d0972c20950b59d30017 (patch) | |
tree | e2e55fffe58af2251872f67d0b0c7c78d1b47f1e /xlators/mgmt | |
parent | 864248af01ba777a53a0eda4fb7b7c23852a8205 (diff) |
glusterd: try to connect on GF_PMAP_PORT_FOREIGN aswell
This patch fix couple of things mentioned below:
1. previously we use to try to connect on only GF_PMAP_PORT_FREE
in the pmap_registry_alloc(), it could happen that some foreign process
would have freed the port by this time ?, hence it is worth giving a try on
GF_PMAP_PORT_FOREIGN ports as well instead of wasting them all.
2. fix pmap_registry_remove() to mark the port asGF_PMAP_PORT_FREE
3. added useful comments on gf_pmap_port_type enum members
Backport of:
> Change-Id: Id2aa7ad55e76ae3fdece21bed15792525ae33fe1
> BUG: 1322805
> Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
> Reviewed-on: http://review.gluster.org/14080
> Tested-by: Prasanna Kumar Kalever <pkalever@redhat.com>
> Smoke: Gluster Build System <jenkins@build.gluster.com>
> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
> CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
> Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
Change-Id: Ib7852aa1c55611e81c78341aace4d374d516f439
BUG: 1323564
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
Reviewed-on: http://review.gluster.org/14117
Tested-by: Prasanna Kumar Kalever <pkalever@redhat.com>
Smoke: Gluster Build System <jenkins@build.gluster.com>
CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
Diffstat (limited to 'xlators/mgmt')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-pmap.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-pmap.c b/xlators/mgmt/glusterd/src/glusterd-pmap.c index d74a565def4..ea35c57ac32 100644 --- a/xlators/mgmt/glusterd/src/glusterd-pmap.c +++ b/xlators/mgmt/glusterd/src/glusterd-pmap.c @@ -189,13 +189,15 @@ pmap_registry_alloc (xlator_t *this) pmap = pmap_registry_get (this); for (p = pmap->last_alloc; p <= GF_PORT_MAX; p++) { - if (pmap->ports[p].type != GF_PMAP_PORT_FREE) - continue; + /* GF_PMAP_PORT_FOREIGN may be freed up ? */ + if ((pmap->ports[p].type == GF_PMAP_PORT_FREE) || + (pmap->ports[p].type == GF_PMAP_PORT_FOREIGN)) { - if (pmap_port_isfree (p)) { - pmap->ports[p].type = GF_PMAP_PORT_LEASED; - port = p; - break; + if (pmap_port_isfree (p)) { + pmap->ports[p].type = GF_PMAP_PORT_LEASED; + port = p; + break; + } } } @@ -275,6 +277,7 @@ remove: free (pmap->ports[p].brickname); + pmap->ports[p].type = GF_PMAP_PORT_FREE; pmap->ports[p].brickname = NULL; pmap->ports[p].xprt = NULL; |