diff options
author | Amar Tumballi <amar@gluster.com> | 2010-09-08 03:29:41 +0000 |
---|---|---|
committer | Vijay Bellur <vijay@dev.gluster.com> | 2010-09-08 03:52:15 -0700 |
commit | 65ac3fdba1b21a103547d80f4446cfdcaf90139b (patch) | |
tree | df423ac1cae8f9bb851dac36b02f6d4704ac2147 | |
parent | 8152690933c0c1168ccc7e79f3e366c3dfa780d8 (diff) |
glusterd: preserve brick's port, retrive it while starting glusterd
* this solves the problem of having brickinfo->port as 0 when
when glusterd is restarted while glusterfsd processes are
running
Signed-off-by: Amar Tumballi <amar@gluster.com>
Signed-off-by: Vijay Bellur <vijay@dev.gluster.com>
BUG: 1569 (data not available in client when glusterd killed and restarted.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1569
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-store.c | 20 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-store.h | 1 |
2 files changed, 18 insertions, 3 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-store.c b/xlators/mgmt/glusterd/src/glusterd-store.c index 89208a9fcc7..a709fb200dd 100644 --- a/xlators/mgmt/glusterd/src/glusterd-store.c +++ b/xlators/mgmt/glusterd/src/glusterd-store.c @@ -138,10 +138,21 @@ glusterd_store_create_brick (glusterd_volinfo_t *volinfo, } - snprintf (buf, sizeof(buf), "hostname=%s\n", brickinfo->hostname); + snprintf (buf, sizeof(buf), "%s=%s\n", + GLUSTERD_STORE_KEY_BRICK_HOSTNAME, brickinfo->hostname); ret = write (shandle->fd, buf, strlen(buf)); - snprintf (buf, sizeof(buf), "path=%s\n", brickinfo->path); + if (ret) + gf_log ("", GF_LOG_TRACE, "failed to write brick->hostname"); + snprintf (buf, sizeof(buf), "%s=%s\n", + GLUSTERD_STORE_KEY_BRICK_PATH, brickinfo->path); + ret = write (shandle->fd, buf, strlen(buf)); + if (ret) + gf_log ("", GF_LOG_TRACE, "failed to write brick->path"); + snprintf (buf, sizeof(buf), "%s=%d\n", + GLUSTERD_STORE_KEY_BRICK_PORT, brickinfo->port); ret = write (shandle->fd, buf, strlen(buf)); + if (ret) + gf_log ("", GF_LOG_TRACE, "failed to write brick->port"); ret = 0; @@ -869,7 +880,10 @@ glusterd_store_retrieve_bricks (glusterd_volinfo_t *volinfo) strlen (GLUSTERD_STORE_KEY_BRICK_PATH))) { strncpy (brickinfo->path, value, sizeof (brickinfo->path)); - }else { + } else if (!strncmp (key, GLUSTERD_STORE_KEY_BRICK_PORT, + strlen (GLUSTERD_STORE_KEY_BRICK_PORT))) { + gf_string2int (value, &brickinfo->port); + } else { gf_log ("", GF_LOG_ERROR, "Unknown key: %s", key); } diff --git a/xlators/mgmt/glusterd/src/glusterd-store.h b/xlators/mgmt/glusterd/src/glusterd-store.h index ff426f61791..af05815d390 100644 --- a/xlators/mgmt/glusterd/src/glusterd-store.h +++ b/xlators/mgmt/glusterd/src/glusterd-store.h @@ -52,6 +52,7 @@ #define GLUSTERD_STORE_KEY_BRICK_HOSTNAME "hostname" #define GLUSTERD_STORE_KEY_BRICK_PATH "path" +#define GLUSTERD_STORE_KEY_BRICK_PORT "listen-port" #define GLUSTERD_STORE_KEY_PEER_UUID "uuid" #define GLUSTERD_STORE_KEY_PEER_HOSTNAME "hostname" |