diff options
| author | Kaushik BV <kaushikbv@gluster.com> | 2010-09-29 04:49:53 +0000 | 
|---|---|---|
| committer | Vijay Bellur <vijay@dev.gluster.com> | 2010-09-29 06:18:05 -0700 | 
| commit | 528dde957c809014aee40737d01cb667e858e0c9 (patch) | |
| tree | b5c9a34a898822206e5698d32dcb7ecb697f95b9 | |
| parent | 2ce4be96bf1c3d08381cbdeb8d57800635702f37 (diff) | |
glusterd: make sure init is not called when there is no topology change
Signed-off-by: Kaushik BV <kaushikbv@gluster.com>
Signed-off-by: Vijay Bellur <vijay@dev.gluster.com>
BUG: 1159 ()
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1159
| -rw-r--r-- | glusterfsd/src/glusterfsd-mgmt.c | 34 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr.c | 2 | 
2 files changed, 27 insertions, 9 deletions
diff --git a/glusterfsd/src/glusterfsd-mgmt.c b/glusterfsd/src/glusterfsd-mgmt.c index 96d2c6681..ac0abfac3 100644 --- a/glusterfsd/src/glusterfsd-mgmt.c +++ b/glusterfsd/src/glusterfsd-mgmt.c @@ -229,6 +229,11 @@ out:          return ret;  } +/* Function has 3types of return value 0, -ve , 1  + *   return 0          =======> reconfiguration of options has succeded + *   return 1          =======> the graph has to be reconstructed and all the xlators should be inited + *   return -1(or -ve) =======> Some Internal Error occured during the operation + */  static int  glusterfs_volfile_reconfigure (FILE *newvolfile_fp)  { @@ -243,9 +248,10 @@ glusterfs_volfile_reconfigure (FILE *newvolfile_fp)          if (!oldvolfile_fp)                  goto out; -	if (!oldvollen) +	if (!oldvollen) { +		ret = 1; // Has to call INIT for the whole graph		  		goto out; - +	}          fwrite (oldvolfile, oldvollen, 1, oldvolfile_fp);          fflush (oldvolfile_fp); @@ -264,7 +270,7 @@ glusterfs_volfile_reconfigure (FILE *newvolfile_fp)                                        newvolfile_graph)) {                  gf_log ("glusterfsd-mgmt", GF_LOG_DEBUG, -                        "Graph topology not equal"); +                        "Graph topology not equal(should call INIT)");                  goto out;          } @@ -293,8 +299,7 @@ glusterfs_volfile_reconfigure (FILE *newvolfile_fp)                                             newvolfile_graph);          if (ret) {                  gf_log ("glusterfsd-mgmt", GF_LOG_DEBUG, -                        "Could not reconfigure new options in old " -                                "graph"); +                        "Could not reconfigure new options in old graph");          }          ret = 0; @@ -352,16 +357,29 @@ mgmt_getspec_cbk (struct rpc_req *req, struct iovec *iov, int count,          fwrite (rsp.spec, size, 1, tmpfp);          fflush (tmpfp); -        /* Check if only options have changed. No need to reload the -           volfile if topology hasn't changed. +        /*  Check if only options have changed. No need to reload the +        *  volfile if topology hasn't changed. +        *  glusterfs_volfile_reconfigure returns 3 possible return states  +        *  return 0          =======> reconfiguration of options has succeded +        *  return 1          =======> the graph has to be reconstructed and all the xlators should be inited +        *  return -1(or -ve) =======> Some Internal Error occured during the operation          */ + +          ret = glusterfs_volfile_reconfigure (tmpfp); -        if (!ret) { +        if (ret == 0) {                  gf_log ("glusterfsd-mgmt", GF_LOG_DEBUG,                          "No need to re-load volfile, reconfigure done");                  goto out;          } +        if (ret < 0) { +                gf_log ("glusterfsd-mgmt", GF_LOG_DEBUG, "Reconfigure failed !!"); +                goto out; +        } + + +          ret = glusterfs_process_volfp (ctx, tmpfp);          if (ret)                  goto out; diff --git a/xlators/cluster/afr/src/afr.c b/xlators/cluster/afr/src/afr.c index a5906550d..09094bdbe 100644 --- a/xlators/cluster/afr/src/afr.c +++ b/xlators/cluster/afr/src/afr.c @@ -250,7 +250,7 @@ reconfigure (xlator_t *this, dict_t *options)  	read_ret = dict_get_str (options, "read-subvolume", &read_subvol); -	if (read_ret == -1)  +	if (read_ret < 0)   		goto next;// No need to traverse, hence set the next option  	trav = this->children;  | 
