diff options
| author | Joseph Fernandes <josferna@redhat.com> | 2014-05-28 13:56:04 +0530 | 
|---|---|---|
| committer | Kaushal M <kaushal@redhat.com> | 2014-07-02 02:19:37 -0700 | 
| commit | 831efecf927788f26b630cb82d5d6ff4af411a3d (patch) | |
| tree | cee0cd0b3925185f72b5b6e7996717df9fb69e0e | |
| parent | 858b570a0c62d31416f0aee8c385b3118a1fad43 (diff) | |
glusterd/snapshot : Fix for snap create preval for remote peer err msg
Fix for the snap create prevalidation error collation when remote peer failed.
Change-Id: If9563580eae4d9bc4d4d795f0b434f2c85b94007
BUG: 1101993
Signed-off-by: Joseph Fernandes <josferna@redhat.com>
Reviewed-on: http://review.gluster.org/7899
Reviewed-by: Rajesh Joseph <rjoseph@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijaikumar Mallikarjuna <vmallika@redhat.com>
Reviewed-by: Kaushal M <kaushal@redhat.com>
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-mgmt.c | 71 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-mgmt.h | 4 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-syncop.c | 57 | 
3 files changed, 46 insertions, 86 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-mgmt.c b/xlators/mgmt/glusterd/src/glusterd-mgmt.c index e93afb27dab..52b4184ee7a 100644 --- a/xlators/mgmt/glusterd/src/glusterd-mgmt.c +++ b/xlators/mgmt/glusterd/src/glusterd-mgmt.c @@ -25,7 +25,7 @@  extern struct rpc_clnt_program gd_mgmt_v3_prog; -static void +void  gd_mgmt_v3_collate_errors (struct syncargs *args, int op_ret, int op_errno,                             char *op_errstr, int op_code,                             glusterd_peerinfo_t *peerinfo, u_char *uuid) @@ -35,6 +35,9 @@ gd_mgmt_v3_collate_errors (struct syncargs *args, int op_ret, int op_errno,          char       op_err[PATH_MAX]  = "";          int32_t    len               = -1;          xlator_t  *this              = NULL; +        int        is_operrstr_blk   = 0; +        char       *err_string       = NULL; +        char       *cli_err_str      = NULL;          this = THIS;          GF_ASSERT (this); @@ -50,68 +53,76 @@ gd_mgmt_v3_collate_errors (struct syncargs *args, int op_ret, int op_errno,                  else                          peer_str = uuid_utoa (uuid); -                if (op_errstr && strcmp (op_errstr, "")) { -                        len = snprintf (err_str, sizeof(err_str) - 1, -                                        "Error: %s", op_errstr); -                        err_str[len] = '\0'; -                } +                is_operrstr_blk = (op_errstr && strcmp (op_errstr, "")); +                err_string     = (is_operrstr_blk) ? op_errstr : err_str;                  switch (op_code) {                  case GLUSTERD_MGMT_V3_LOCK:                          { -                                len = snprintf (op_err, sizeof(op_err) - 1, +                                len = snprintf (op_err, sizeof(op_err),                                                  "Locking failed " -                                                "on %s. %s", peer_str, err_str); +                                                "on %s. %s", peer_str, +                                                err_string);                                  break;                          }                  case GLUSTERD_MGMT_V3_PRE_VALIDATE:                          { -                                len = snprintf (op_err, sizeof(op_err) - 1, +                                len = snprintf (op_err, sizeof(op_err),                                                  "Pre Validation failed " -                                                "on %s. %s", peer_str, err_str); +                                                "on %s. %s", peer_str, +                                                err_string);                                  break;                          }                  case GLUSTERD_MGMT_V3_BRICK_OP:                          { -                                len = snprintf (op_err, sizeof(op_err) - 1, +                                len = snprintf (op_err, sizeof(op_err),                                                  "Brick ops failed " -                                                "on %s. %s", peer_str, err_str); +                                                "on %s. %s", peer_str, +                                                err_string);                                  break;                          }                  case GLUSTERD_MGMT_V3_COMMIT:                          { -                                len = snprintf (op_err, sizeof(op_err) - 1, -                                                "Commit failed on %s. %s", -                                                peer_str, err_str); +                                len = snprintf (op_err, sizeof(op_err), +                                                "Commit failed" +                                                " on %s. %s", peer_str, +                                                err_string);                                  break;                          }                  case GLUSTERD_MGMT_V3_POST_VALIDATE:                          { -                                len = snprintf (op_err, sizeof(op_err) - 1, +                                len = snprintf (op_err, sizeof(op_err),                                                  "Post Validation failed " -                                                "on %s. %s", peer_str, err_str); +                                                "on %s. %s", peer_str, +                                                err_string);                                  break;                          }                  case GLUSTERD_MGMT_V3_UNLOCK:                          { -                                len = snprintf (op_err, sizeof(op_err) - 1, +                                len = snprintf (op_err, sizeof(op_err),                                                  "Unlocking failed " -                                                "on %s. %s", peer_str, err_str); +                                                "on %s. %s", peer_str, +                                                err_string);                                  break;                          } +                default : +                        len = snprintf (op_err, sizeof(op_err), +                                       "Unknown error! " +                                       "on %s. %s", peer_str, +                                        err_string);                  } -                op_err[len] = '\0'; + +                cli_err_str = ((is_operrstr_blk) ? op_errstr : op_err);                  if (args->errstr) { -                        len = snprintf (err_str, sizeof(err_str) - 1, -                                        "%s\n%s", args->errstr, -                                        op_err); +                        len = snprintf (err_str, sizeof(err_str), +                                      "%s\n%s", args->errstr, +                                      cli_err_str);                          GF_FREE (args->errstr);                          args->errstr = NULL;                  } else -                        len = snprintf (err_str, sizeof(err_str) - 1, -                                        "%s", op_err); -                err_str[len] = '\0'; +                        len = snprintf (err_str, sizeof(err_str), +                                "%s", cli_err_str);                  gf_log (this->name, GF_LOG_ERROR, "%s", op_err);                  args->errstr = gf_strdup (err_str); @@ -567,7 +578,7 @@ out:          if (rsp_dict)                  dict_unref (rsp_dict); -        gd_mgmt_v3_collate_errors (args, op_ret, op_errno, NULL, +        gd_mgmt_v3_collate_errors (args, op_ret, op_errno, rsp.op_errstr,                                    GLUSTERD_MGMT_V3_PRE_VALIDATE,                                    peerinfo, rsp.uuid); @@ -802,7 +813,7 @@ gd_mgmt_v3_brick_op_cbk_fn (struct rpc_req *req, struct iovec *iov,          op_errno = rsp.op_errno;  out: -        gd_mgmt_v3_collate_errors (args, op_ret, op_errno, NULL, +        gd_mgmt_v3_collate_errors (args, op_ret, op_errno, rsp.op_errstr,                                     GLUSTERD_MGMT_V3_BRICK_OP,                                     peerinfo, rsp.uuid); @@ -1032,7 +1043,7 @@ out:          if (rsp_dict)                  dict_unref (rsp_dict); -        gd_mgmt_v3_collate_errors (args, op_ret, op_errno, NULL, +        gd_mgmt_v3_collate_errors (args, op_ret, op_errno, rsp.op_errstr,                                    GLUSTERD_MGMT_V3_COMMIT,                                    peerinfo, rsp.uuid); @@ -1230,7 +1241,7 @@ gd_mgmt_v3_post_validate_cbk_fn (struct rpc_req *req, struct iovec *iov,          op_errno = rsp.op_errno;  out: -        gd_mgmt_v3_collate_errors (args, op_ret, op_errno, NULL, +        gd_mgmt_v3_collate_errors (args, op_ret, op_errno, rsp.op_errstr,                                    GLUSTERD_MGMT_V3_POST_VALIDATE,                                    peerinfo, rsp.uuid);          if (rsp.op_errstr) diff --git a/xlators/mgmt/glusterd/src/glusterd-mgmt.h b/xlators/mgmt/glusterd/src/glusterd-mgmt.h index c8b0f066639..ab9265c75c4 100644 --- a/xlators/mgmt/glusterd/src/glusterd-mgmt.h +++ b/xlators/mgmt/glusterd/src/glusterd-mgmt.h @@ -15,6 +15,10 @@  #include "config.h"  #endif +void gd_mgmt_v3_collate_errors (struct syncargs *args, int op_ret, int op_errno, +                                char *op_errstr, int op_code, +                                glusterd_peerinfo_t *peerinfo, u_char *uuid); +  int32_t  gd_mgmt_v3_pre_validate_fn (glusterd_op_t op, dict_t *dict,                             char **op_errstr, dict_t *rsp_dict); diff --git a/xlators/mgmt/glusterd/src/glusterd-syncop.c b/xlators/mgmt/glusterd/src/glusterd-syncop.c index 1381edbab9d..6e7a9b6c8be 100644 --- a/xlators/mgmt/glusterd/src/glusterd-syncop.c +++ b/xlators/mgmt/glusterd/src/glusterd-syncop.c @@ -13,6 +13,7 @@  #include "xdr-generic.h"  #include "glusterd1-xdr.h"  #include "glusterd-syncop.h" +#include "glusterd-mgmt.h"  #include "glusterd.h"  #include "glusterd-op-sm.h" @@ -34,62 +35,6 @@ gd_synctask_barrier_wait (struct syncargs *args, int count)  }  static void -gd_mgmt_v3_collate_errors (struct syncargs *args, int op_ret, int op_errno, -                           char *op_errstr, int op_code, -                           glusterd_peerinfo_t *peerinfo, u_char *uuid) -{ -        char     err_str[PATH_MAX] = "Please check log file for details."; -        char     op_err[PATH_MAX] = ""; -        char    *peer_str      = NULL; - -        if (op_ret) { -                args->op_ret = op_ret; -                args->op_errno = op_errno; - -                if (peerinfo) -                        peer_str = peerinfo->hostname; -                else -                        peer_str = uuid_utoa (uuid); - -                if (op_errstr && strcmp (op_errstr, "")) -                        snprintf (err_str, sizeof(err_str) - 1, -                                  "Error: %s", op_errstr); - -                switch (op_code) { -                        case GLUSTERD_MGMT_V3_LOCK: -                        { -                                snprintf (op_err, sizeof(op_err) - 1, -                                          "Locking failed " -                                          "on %s. %s", peer_str, err_str); -                                break; -                        } -                        case GLUSTERD_MGMT_V3_UNLOCK: -                        { -                                snprintf (op_err, sizeof(op_err) - 1, -                                          "Unlocking failed " -                                          "on %s. %s", peer_str, err_str); -                                break; -                        } -                } - -                if (args->errstr) { -                        snprintf (err_str, sizeof(err_str) - 1, -                                  "%s\n%s", args->errstr, -                                  op_err); -                        GF_FREE (args->errstr); -                        args->errstr = NULL; -                } else -                        snprintf (err_str, sizeof(err_str) - 1, -                                  "%s", op_err); - -                gf_log ("", GF_LOG_ERROR, "%s", op_err); -                args->errstr = gf_strdup (err_str); -        } - -        return; -} - -static void  gd_collate_errors (struct syncargs *args, int op_ret, int op_errno,                     char *op_errstr, int op_code,                     glusterd_peerinfo_t *peerinfo, u_char *uuid)  | 
