diff options
Diffstat (limited to 'api/src')
| -rw-r--r-- | api/src/Makefile.am | 2 | ||||
| -rw-r--r-- | api/src/gfapi-messages.h | 102 | ||||
| -rw-r--r-- | api/src/glfs-handleops.c | 7 | ||||
| -rw-r--r-- | api/src/glfs-master.c | 10 | ||||
| -rw-r--r-- | api/src/glfs-mgmt.c | 129 | ||||
| -rw-r--r-- | api/src/glfs-resolve.c | 51 | ||||
| -rw-r--r-- | api/src/glfs.c | 45 | 
7 files changed, 254 insertions, 92 deletions
diff --git a/api/src/Makefile.am b/api/src/Makefile.am index 04246578ff6..3c517e68072 100644 --- a/api/src/Makefile.am +++ b/api/src/Makefile.am @@ -1,5 +1,5 @@  lib_LTLIBRARIES = libgfapi.la -noinst_HEADERS = glfs-mem-types.h glfs-internal.h +noinst_HEADERS = glfs-mem-types.h glfs-internal.h gfapi-messages.h  libgfapi_HEADERS = glfs.h glfs-handles.h  libgfapidir = $(includedir)/glusterfs/api diff --git a/api/src/gfapi-messages.h b/api/src/gfapi-messages.h new file mode 100644 index 00000000000..d7cfd8371e6 --- /dev/null +++ b/api/src/gfapi-messages.h @@ -0,0 +1,102 @@ +/* + *   Copyright (c) 2015 Red Hat, Inc. <http://www.redhat.com> + *   This file is part of GlusterFS. + * + *   This file is licensed to you under your choice of the GNU Lesser + *   General Public License, version 3 or any later version (LGPLv3 or + *   later), or the GNU General Public License, version 2 (GPLv2), in all + *   cases as published by the Free Software Foundation. + *   */ + +#ifndef _GFAPI_MESSAGES_H__ +#define _GFAPI_MESSAGES_H_ + +#ifndef _CONFIG_H +#define _CONFIG_H +#include "config.h" +#endif + +#include "glfs-message-id.h" + +/*! \file gfapi-messages.h + *  \brief libgfapi log-message IDs and their descriptions + */ + +/* NOTE: Rules for message additions + * 1) Each instance of a message is _better_ left with a unique message ID, even + *    if the message format is the same. Reasoning is that, if the message + *    format needs to change in one instance, the other instances are not + *    impacted or the new change does not change the ID of the instance being + *    modified. + * 2) Addition of a message, + *       - Should increment the GLFS_NUM_MESSAGES + *       - Append to the list of messages defined, towards the end + *       - Retain macro naming as glfs_msg_X (for redability across developers) + * NOTE: Rules for message format modifications + * 3) Check acorss the code if the message ID macro in question is reused + *    anywhere. If reused then then the modifications should ensure correctness + *    everywhere, or needs a new message ID as (1) above was not adhered to. If + *    not used anywhere, proceed with the required modification. + * NOTE: Rules for message deletion + * 4) Check (3) and if used anywhere else, then cannot be deleted. If not used + *    anywhere, then can be deleted, but will leave a hole by design, as + *    addition rules specify modification to the end of the list and not filling + *    holes. + */ + +#define GLFS_GFAPI_BASE             GLFS_MSGID_COMP_API +#define GLFS_NUM_MESSAGES           45 +#define GLFS_MSGID_END              (GLFS_GFAPI_BASE + GLFS_NUM_MESSAGESi + 1) +/* Messages with message IDs */ +#define glfs_msg_start_x GLFS_GFAPI_BASE, "Invalid: Start of messages" +/*------------*/ + +#define API_MSG_MEM_ACCT_INIT_FAILED            (GLFS_GFAPI_BASE + 1) +#define API_MSG_MASTER_XLATOR_INIT_FAILED       (GLFS_GFAPI_BASE + 2) +#define API_MSG_GFAPI_XLATOR_INIT_FAILED        (GLFS_GFAPI_BASE + 3) +#define API_MSG_VOLFILE_OPEN_FAILED             (GLFS_GFAPI_BASE + 4) +#define API_MSG_VOL_SPEC_FILE_ERROR             (GLFS_GFAPI_BASE + 5) +#define API_MSG_GLFS_FSOBJ_NULL                 (GLFS_GFAPI_BASE + 6) +#define API_MSG_INVALID_ENTRY                   (GLFS_GFAPI_BASE + 7) +#define API_MSG_FSMUTEX_LOCK_FAILED             (GLFS_GFAPI_BASE + 8) +#define API_MSG_COND_WAIT_FAILED                (GLFS_GFAPI_BASE + 9) +#define API_MSG_FSMUTEX_UNLOCK_FAILED           (GLFS_GFAPI_BASE + 10) +#define API_MSG_INODE_REFRESH_FAILED            (GLFS_GFAPI_BASE + 11) +#define API_MSG_GRAPH_CONSTRUCT_FAILED          (GLFS_GFAPI_BASE + 12) +#define API_MSG_FUSE_XLATOR_ERROR               (GLFS_GFAPI_BASE + 13) +#define API_MSG_XDR_PAYLOAD_FAILED              (GLFS_GFAPI_BASE + 14) +#define API_MSG_GET_VOLINFO_CBK_FAILED          (GLFS_GFAPI_BASE + 15) +#define API_MSG_FETCH_VOLUUID_FAILED            (GLFS_GFAPI_BASE + 16) +#define API_MSG_INSUFF_SIZE                     (GLFS_GFAPI_BASE + 17) +#define API_MSG_FRAME_CREAT_FAILED              (GLFS_GFAPI_BASE + 18) +#define API_MSG_DICT_SET_FAILED                 (GLFS_GFAPI_BASE + 19) +#define API_MSG_XDR_DECODE_FAILED               (GLFS_GFAPI_BASE + 20) +#define API_MSG_GET_VOLFILE_FAILED              (GLFS_GFAPI_BASE + 21) +#define API_MSG_WRONG_OPVERSION                 (GLFS_GFAPI_BASE + 22) +#define API_MSG_DICT_SERIALIZE_FAILED           (GLFS_GFAPI_BASE + 23) +#define API_MSG_REMOTE_HOST_CONN_FAILED         (GLFS_GFAPI_BASE + 24) +#define API_MSG_VOLFILE_SERVER_EXHAUST          (GLFS_GFAPI_BASE + 25) +#define API_MSG_CREATE_RPC_CLIENT_FAILED        (GLFS_GFAPI_BASE + 26) +#define API_MSG_REG_NOTIFY_FUNC_FAILED          (GLFS_GFAPI_BASE + 27) +#define API_MSG_REG_CBK_FUNC_FAILED             (GLFS_GFAPI_BASE + 28) +#define API_MSG_GET_CWD_FAILED                  (GLFS_GFAPI_BASE + 29) +#define API_MSG_FGETXATTR_FAILED                (GLFS_GFAPI_BASE + 30) +#define API_MSG_LOCKINFO_KEY_MISSING            (GLFS_GFAPI_BASE + 31) +#define API_MSG_FSETXATTR_FAILED                (GLFS_GFAPI_BASE + 32) +#define API_MSG_FSYNC_FAILED                    (GLFS_GFAPI_BASE + 33) +#define API_MSG_FDCREATE_FAILED                 (GLFS_GFAPI_BASE + 34) +#define API_MSG_INODE_PATH_FAILED               (GLFS_GFAPI_BASE + 35) +#define API_MSG_SYNCOP_OPEN_FAILED              (GLFS_GFAPI_BASE + 36) +#define API_MSG_LOCK_MIGRATE_FAILED             (GLFS_GFAPI_BASE + 37) +#define API_MSG_OPENFD_SKIPPED                  (GLFS_GFAPI_BASE + 38) +#define API_MSG_FIRST_LOOKUP_GRAPH_FAILED       (GLFS_GFAPI_BASE + 39) +#define API_MSG_CWD_GRAPH_REF_FAILED            (GLFS_GFAPI_BASE + 40) +#define API_MSG_SWITCHED_GRAPH                  (GLFS_GFAPI_BASE + 41) +#define API_MSG_XDR_RESPONSE_DECODE_FAILED      (GLFS_GFAPI_BASE + 42) +#define API_MSG_VOLFILE_INFO                    (GLFS_GFAPI_BASE + 43) +#define API_MSG_VOLFILE_CONNECTING              (GLFS_GFAPI_BASE + 44) +#define API_MSG_NEW_GRAPH                       (GLFS_GFAPI_BASE + 45) +/*------------*/ +#define glfs_msg_end_x GLFS_MSGID_END, "Invalid: End of messages" + +#endif /* !_GFAPI_MESSAGES_H_ */ diff --git a/api/src/glfs-handleops.c b/api/src/glfs-handleops.c index 12ca94cb2dc..fd14b4cf70c 100644 --- a/api/src/glfs-handleops.c +++ b/api/src/glfs-handleops.c @@ -14,6 +14,7 @@  #include "syncop.h"  #include "glfs.h"  #include "glfs-handles.h" +#include "gfapi-messages.h"  int  glfs_listxattr_process (void *value, size_t size, dict_t *xattr); @@ -1212,7 +1213,8 @@ pub_glfs_h_create_from_handle (struct glfs *fs, unsigned char *handle, int len,          ret = syncop_lookup (subvol, &loc, &iatt, 0, 0, 0);          DECODE_SYNCOP_ERR (ret);          if (ret) { -                gf_log (subvol->name, GF_LOG_WARNING, +                gf_msg (subvol->name, GF_LOG_WARNING, errno, +                        API_MSG_INODE_REFRESH_FAILED,                          "inode refresh of %s failed: %s",                          uuid_utoa (loc.gfid), strerror (errno));                  goto out; @@ -1222,7 +1224,8 @@ pub_glfs_h_create_from_handle (struct glfs *fs, unsigned char *handle, int len,          if (newinode)                  inode_lookup (newinode);          else { -                gf_log (subvol->name, GF_LOG_WARNING, +                gf_msg (subvol->name, GF_LOG_WARNING, EINVAL, +                        API_MSG_INVALID_ENTRY,                          "inode linking of %s failed: %s",                          uuid_utoa (loc.gfid), strerror (errno));                  errno = EINVAL; diff --git a/api/src/glfs-master.c b/api/src/glfs-master.c index dfce2f9b78c..11843c15b4d 100644 --- a/api/src/glfs-master.c +++ b/api/src/glfs-master.c @@ -25,6 +25,7 @@  #include "glfs-internal.h"  #include "glfs-mem-types.h" +#include "gfapi-messages.h"  int @@ -88,7 +89,8 @@ notify (xlator_t *this, int event, void *data, ...)  	switch (event) {  	case GF_EVENT_GRAPH_NEW: -		gf_log (this->name, GF_LOG_INFO, "New graph %s (%d) coming up", +		gf_msg (this->name, GF_LOG_INFO, 0, API_MSG_NEW_GRAPH, +                        "New graph %s (%d) coming up",  			uuid_utoa ((unsigned char *)graph->graph_uuid),  			graph->id);  		break; @@ -117,8 +119,7 @@ notify (xlator_t *this, int event, void *data, ...)                  glfs_process_upcall_event (fs, data);                  break;  	default: -		gf_log (this->name, GF_LOG_DEBUG, -			"got notify event %d", event); +		gf_msg_debug (this->name, 0, "got notify event %d", event);  		break;  	} @@ -136,7 +137,8 @@ mem_acct_init (xlator_t *this)  	ret = xlator_mem_acct_init (this, glfs_mt_end + 1);  	if (ret) { -		gf_log (this->name, GF_LOG_ERROR, "Failed to initialise " +		gf_msg (this->name, GF_LOG_ERROR, ENOMEM, +                        API_MSG_MEM_ACCT_INIT_FAILED, "Failed to initialise "                          "memory accounting");  		return ret;  	} diff --git a/api/src/glfs-mgmt.c b/api/src/glfs-mgmt.c index 67a3e6d6c29..81e9fd63fa0 100644 --- a/api/src/glfs-mgmt.c +++ b/api/src/glfs-mgmt.c @@ -40,6 +40,7 @@  #include "glfs-internal.h"  #include "glfs-mem-types.h" +#include "gfapi-messages.h"  int glfs_volfile_fetch (struct glfs *fs);  int32_t glfs_get_volume_info_rpc (call_frame_t *frame, xlator_t *this, @@ -56,13 +57,16 @@ glfs_process_volfp (struct glfs *fs, FILE *fp)  	ctx = fs->ctx;  	graph = glusterfs_graph_construct (fp);  	if (!graph) { -		gf_log ("glfs", GF_LOG_ERROR, "failed to construct the graph"); +		gf_msg ("glfs", GF_LOG_ERROR, errno, +                        API_MSG_GRAPH_CONSTRUCT_FAILED, +                        "failed to construct the graph");  		goto out;  	}  	for (trav = graph->first; trav; trav = trav->next) {  		if (strcmp (trav->type, "mount/fuse") == 0) { -			gf_log ("glfs", GF_LOG_ERROR, +			gf_msg ("glfs", GF_LOG_ERROR, EINVAL, +                                API_MSG_FUSE_XLATOR_ERROR,  				"fuse xlator cannot be specified "  				"in volume file");  			goto out; @@ -183,7 +187,8 @@ mgmt_submit_request (void *req, call_frame_t *frame,  		/* Create the xdr payload */  		ret = xdr_serialize_generic (iov, req, xdrproc);  		if (ret == -1) { -			gf_log (THIS->name, GF_LOG_WARNING, +			gf_msg (THIS->name, GF_LOG_WARNING, 0, +                                API_MSG_XDR_PAYLOAD_FAILED,  				"failed to create XDR payload");  			goto out;  		} @@ -227,7 +232,8 @@ mgmt_get_volinfo_cbk (struct rpc_req *req, struct iovec *iov,          args = frame->local;          if (!ctx) { -                gf_log (frame->this->name, GF_LOG_ERROR, "NULL context"); +                gf_msg (frame->this->name, GF_LOG_ERROR, EINVAL, +                        API_MSG_INVALID_ENTRY, "NULL context");                  errno = EINVAL;                  ret = -1;                  goto out; @@ -236,7 +242,8 @@ mgmt_get_volinfo_cbk (struct rpc_req *req, struct iovec *iov,          fs = ((xlator_t *)ctx->master)->private;          if (-1 == req->rpc_status) { -                gf_log (frame->this->name, GF_LOG_ERROR, +                gf_msg (frame->this->name, GF_LOG_ERROR, EINVAL, +                        API_MSG_INVALID_ENTRY,                          "GET_VOLUME_INFO RPC call is not successfull");                  errno = EINVAL;                  ret = -1; @@ -246,13 +253,14 @@ mgmt_get_volinfo_cbk (struct rpc_req *req, struct iovec *iov,          ret = xdr_to_generic (*iov, &rsp, (xdrproc_t)xdr_gf_get_volume_info_rsp);          if (ret < 0) { -                gf_log (frame->this->name, GF_LOG_ERROR, +                gf_msg (frame->this->name, GF_LOG_ERROR, 0, +                        API_MSG_XDR_RESPONSE_DECODE_FAILED,                          "Failed to decode xdr response for GET_VOLUME_INFO");                  goto out;          } -        gf_log (frame->this->name, GF_LOG_DEBUG, -                "Received resp to GET_VOLUME_INFO RPC: %d", rsp.op_ret); +        gf_msg_debug (frame->this->name, 0, "Received resp to GET_VOLUME_INFO " +                      "RPC: %d", rsp.op_ret);          if (rsp.op_ret == -1) {                  errno = rsp.op_errno; @@ -261,8 +269,9 @@ mgmt_get_volinfo_cbk (struct rpc_req *req, struct iovec *iov,          }          if (!rsp.dict.dict_len) { -                gf_log (frame->this->name, GF_LOG_ERROR, -                        "Response received for GET_VOLUME_INFO RPC call is not valid"); +                gf_msg (frame->this->name, GF_LOG_ERROR, EINVAL, +                        API_MSG_INVALID_ENTRY, "Response received for " +                        "GET_VOLUME_INFO RPC call is not valid");                  ret = -1;                  errno = EINVAL;                  goto out; @@ -295,17 +304,17 @@ mgmt_get_volinfo_cbk (struct rpc_req *req, struct iovec *iov,          ret = 0;  out:          if (volume_id_str) { -                gf_log (frame->this->name, GF_LOG_DEBUG, -                        "Volume Id: %s", volume_id_str); +                gf_msg_debug (frame->this->name, 0, +                              "Volume Id: %s", volume_id_str);                  pthread_mutex_lock (&fs->mutex);                  gf_uuid_parse (volume_id_str, fs->vol_uuid);                  pthread_mutex_unlock (&fs->mutex);          }          if (ret) { -               gf_log (frame->this->name, GF_LOG_ERROR, -                       "In GET_VOLUME_INFO cbk, received error: %s", -                       strerror(errno)); +                gf_msg (frame->this->name, GF_LOG_ERROR, errno, +                        API_MSG_GET_VOLINFO_CBK_FAILED, "In GET_VOLUME_INFO " +                        "cbk, received error: %s", strerror(errno));          }          if (dict) @@ -317,7 +326,7 @@ out:          if (rsp.op_errstr && *rsp.op_errstr)                  free (rsp.op_errstr); -        gf_log (frame->this->name, GF_LOG_DEBUG, "Returning: %d", ret); +        gf_msg_debug (frame->this->name, 0, "Returning: %d", ret);          __wake (args); @@ -344,18 +353,21 @@ pub_glfs_get_volumeid (struct glfs *fs, char *volid, size_t size)          glfs_get_volume_info (fs);          if (gf_uuid_is_null (fs->vol_uuid)) { -                gf_log (THIS->name, GF_LOG_ERROR, "Unable to fetch volume UUID"); +                gf_msg (THIS->name, GF_LOG_ERROR, EINVAL, +                        API_MSG_FETCH_VOLUUID_FAILED, "Unable to fetch " +                        "volume UUID");                  return -1;          }  done:          if (!volid || !size) { -                gf_log (THIS->name, GF_LOG_DEBUG, "volumeid/size is null"); +                gf_msg_debug (THIS->name, 0, "volumeid/size is null");                  return uuid_size;          }          if (size < uuid_size) { -                gf_log (THIS->name, GF_LOG_ERROR, "Insufficient size passed"); +                gf_msg (THIS->name, GF_LOG_ERROR, ERANGE, API_MSG_INSUFF_SIZE, +                        "Insufficient size passed");                  errno = ERANGE;                  return -1;          } @@ -378,7 +390,9 @@ glfs_get_volume_info (struct glfs *fs)          ctx = fs->ctx;          frame = create_frame (THIS, ctx->pool);          if (!frame) { -                gf_log ("glfs", GF_LOG_ERROR, "failed to create the frame"); +                gf_msg ("glfs", GF_LOG_ERROR, ENOMEM, +                        API_MSG_FRAME_CREAT_FAILED, +                        "failed to create the frame");                  ret = -1;                  goto out;          } @@ -433,7 +447,8 @@ glfs_get_volume_info_rpc (call_frame_t *frame, xlator_t *this,          flags = (int32_t)GF_GET_VOLUME_UUID; //ctx->flags;          ret = dict_set_int32 (dict, "flags", flags);          if (ret) { -                gf_log (frame->this->name, GF_LOG_ERROR, "failed to set flags"); +                gf_msg (frame->this->name, GF_LOG_ERROR, EINVAL, +                        API_MSG_DICT_SET_FAILED, "failed to set flags");                  goto out;          } @@ -500,7 +515,8 @@ glfs_mgmt_getspec_cbk (struct rpc_req *req, struct iovec *iov, int count,  	ctx = frame->this->ctx;  	if (!ctx) { -		gf_log (frame->this->name, GF_LOG_ERROR, "NULL context"); +		gf_msg (frame->this->name, GF_LOG_ERROR, EINVAL, +                        API_MSG_INVALID_ENTRY, "NULL context");  		errno = EINVAL;  		ret = -1;  		goto out; @@ -516,13 +532,15 @@ glfs_mgmt_getspec_cbk (struct rpc_req *req, struct iovec *iov, int count,  	ret = xdr_to_generic (*iov, &rsp, (xdrproc_t)xdr_gf_getspec_rsp);  	if (ret < 0) { -		gf_log (frame->this->name, GF_LOG_ERROR, "XDR decoding error"); +		gf_msg (frame->this->name, GF_LOG_ERROR, 0, +                        API_MSG_XDR_DECODE_FAILED, "XDR decoding error");  		ret   = -1;  		goto out;  	}  	if (-1 == rsp.op_ret) { -		gf_log (frame->this->name, GF_LOG_ERROR, +		gf_msg (frame->this->name, GF_LOG_ERROR, rsp.op_errno, +                        API_MSG_GET_VOLFILE_FAILED,  			"failed to get the 'volume file' from server");  		ret = -1;  		errno = rsp.op_errno; @@ -534,7 +552,8 @@ glfs_mgmt_getspec_cbk (struct rpc_req *req, struct iovec *iov, int count,  	if ((size == fs->oldvollen) &&  	    (memcmp (fs->oldvolfile, rsp.spec, size) == 0)) { -		gf_log (frame->this->name, GF_LOG_INFO, +		gf_msg (frame->this->name, GF_LOG_INFO, 0, +                        API_MSG_VOLFILE_INFO,  			"No change in volfile, continuing");  		goto out;  	} @@ -563,15 +582,14 @@ glfs_mgmt_getspec_cbk (struct rpc_req *req, struct iovec *iov, int count,  	ret = glusterfs_volfile_reconfigure (fs->oldvollen, tmpfp, fs->ctx,  					     fs->oldvolfile);  	if (ret == 0) { -		gf_log ("glusterfsd-mgmt", GF_LOG_DEBUG, -			"No need to re-load volfile, reconfigure done"); +		gf_msg_debug ("glusterfsd-mgmt", 0, "No need to re-load " +                              "volfile, reconfigure done");  		ret = glusterfs_oldvolfile_update (fs, rsp.spec, size);  		goto out;  	}  	if (ret < 0) { -		gf_log ("glusterfsd-mgmt", GF_LOG_DEBUG, -			"Reconfigure failed !!"); +		gf_msg_debug ("glusterfsd-mgmt", 0, "Reconfigure failed !!");  		goto out;  	} @@ -590,8 +608,9 @@ out:  	// Stop if server is running at an unsupported op-version  	if (ENOTSUP == ret) { -		gf_log ("mgmt", GF_LOG_ERROR, "Server is operating at an " -			"op-version which is not supported"); +		gf_msg ("mgmt", GF_LOG_ERROR, ENOTSUP, API_MSG_WRONG_OPVERSION, +                        "Server is operating at an op-version which is not " +                        "supported");  		errno = ENOTSUP;  		glfs_init_done (fs, -1);  	} @@ -600,7 +619,8 @@ out:  		/* Do it only for the first time */  		/* Failed to get the volume file, something wrong,  		   restart the process */ -		gf_log ("glfs-mgmt", GF_LOG_ERROR, +		gf_msg ("glfs-mgmt", GF_LOG_ERROR, EINVAL, +                        API_MSG_INVALID_ENTRY,  			"failed to fetch volume file (key:%s)",  			ctx->cmd_args.volfile_id);  		if (!need_retry) { @@ -645,22 +665,25 @@ glfs_volfile_fetch (struct glfs *fs)          // decision          ret = dict_set_int32 (dict, "min-op-version", GD_OP_VERSION_MIN);          if (ret) { -                gf_log (THIS->name, GF_LOG_ERROR, "Failed to set min-op-version" -                        " in request dict"); +                gf_msg (THIS->name, GF_LOG_ERROR, EINVAL, +                        API_MSG_DICT_SET_FAILED, +                        "Failed to set min-op-version in request dict");                  goto out;          }          ret = dict_set_int32 (dict, "max-op-version", GD_OP_VERSION_MAX);          if (ret) { -                gf_log (THIS->name, GF_LOG_ERROR, "Failed to set max-op-version" -                        " in request dict"); +                gf_msg (THIS->name, GF_LOG_ERROR, EINVAL, +                        API_MSG_DICT_SET_FAILED, +                        "Failed to set max-op-version in request dict");                  goto out;          }          ret = dict_allocate_and_serialize (dict, &req.xdata.xdata_val,                                             &req.xdata.xdata_len);          if (ret < 0) { -                gf_log (THIS->name, GF_LOG_ERROR, +                gf_msg (THIS->name, GF_LOG_ERROR, 0, +                        API_MSG_DICT_SERIALIZE_FAILED,                          "Failed to serialize dictionary");                  goto out;          } @@ -696,15 +719,17 @@ mgmt_rpc_notify (struct rpc_clnt *rpc, void *mydata, rpc_clnt_event_t event,  	switch (event) {  	case RPC_CLNT_DISCONNECT:  		if (!ctx->active) { -                        gf_log ("glfs-mgmt", GF_LOG_ERROR, +                        gf_msg ("glfs-mgmt", GF_LOG_ERROR, errno, +                                API_MSG_REMOTE_HOST_CONN_FAILED,                                  "failed to connect with remote-host: %s (%s)",                                  ctx->cmd_args.volfile_server,                                  strerror (errno));                          server = ctx->cmd_args.curr_server;                          if (server->list.next == &ctx->cmd_args.volfile_servers) {                                  errno = ENOTCONN; -                                gf_log("glfs-mgmt", GF_LOG_INFO, -                                       "Exhausted all volfile servers"); +                                gf_msg ("glfs-mgmt", GF_LOG_INFO, ENOTCONN, +                                        API_MSG_VOLFILE_SERVER_EXHAUST, +                                        "Exhausted all volfile servers");                                  glfs_init_done (fs, -1);                                  break;                          } @@ -719,7 +744,8 @@ mgmt_rpc_notify (struct rpc_clnt *rpc, void *mydata, rpc_clnt_event_t event,                                                "remote-port",                                                server->port);                          if (ret != 0) { -                                gf_log ("glfs-mgmt", GF_LOG_ERROR, +                                gf_msg ("glfs-mgmt", GF_LOG_ERROR, ENOTCONN, +                                        API_MSG_DICT_SET_FAILED,                                          "failed to set remote-port: %d",                                          server->port);                                  errno = ENOTCONN; @@ -731,7 +757,8 @@ mgmt_rpc_notify (struct rpc_clnt *rpc, void *mydata, rpc_clnt_event_t event,                                              "remote-host",                                              server->volfile_server);                          if (ret != 0) { -                                gf_log ("glfs-mgmt", GF_LOG_ERROR, +                                gf_msg ("glfs-mgmt", GF_LOG_ERROR, ENOTCONN, +                                        API_MSG_DICT_SET_FAILED,                                          "failed to set remote-host: %s",                                          server->volfile_server);                                  errno = ENOTCONN; @@ -743,14 +770,16 @@ mgmt_rpc_notify (struct rpc_clnt *rpc, void *mydata, rpc_clnt_event_t event,                                              "transport-type",                                              server->transport);                          if (ret != 0) { -                                gf_log ("glfs-mgmt", GF_LOG_ERROR, +                                gf_msg ("glfs-mgmt", GF_LOG_ERROR, ENOTCONN, +                                        API_MSG_DICT_SET_FAILED,                                          "failed to set transport-type: %s",                                          server->transport);                                  errno = ENOTCONN;                                  glfs_init_done (fs, -1);                                  break;                          } -                        gf_log ("glfs-mgmt", GF_LOG_INFO, +                        gf_msg ("glfs-mgmt", GF_LOG_INFO, 0, +                                API_MSG_VOLFILE_CONNECTING,                                  "connecting to next volfile server %s"                                  " at port %d with transport: %s",                                  server->volfile_server, server->port, @@ -764,7 +793,8 @@ mgmt_rpc_notify (struct rpc_clnt *rpc, void *mydata, rpc_clnt_event_t event,  		if (ret && (ctx->active == NULL)) {  			/* Do it only for the first time */  			/* Exit the process.. there are some wrong options */ -			gf_log ("glfs-mgmt", GF_LOG_ERROR, +			gf_msg ("glfs-mgmt", GF_LOG_ERROR, EINVAL, +                                API_MSG_INVALID_ENTRY,  				"failed to fetch volume file (key:%s)",                                  ctx->cmd_args.volfile_id);                          errno = EINVAL; @@ -829,21 +859,24 @@ glfs_mgmt_init (struct glfs *fs)  	rpc = rpc_clnt_new (options, ctx, THIS->name, 8);  	if (!rpc) {  		ret = -1; -		gf_log (THIS->name, GF_LOG_WARNING, +		gf_msg (THIS->name, GF_LOG_WARNING, 0, +                        API_MSG_CREATE_RPC_CLIENT_FAILED,  			"failed to create rpc clnt");  		goto out;  	}  	ret = rpc_clnt_register_notify (rpc, mgmt_rpc_notify, THIS);  	if (ret) { -		gf_log (THIS->name, GF_LOG_WARNING, +		gf_msg (THIS->name, GF_LOG_WARNING, 0, +                        API_MSG_REG_NOTIFY_FUNC_FAILED,  			"failed to register notify function");  		goto out;  	}  	ret = rpcclnt_cbk_program_register (rpc, &mgmt_cbk_prog, THIS);  	if (ret) { -		gf_log (THIS->name, GF_LOG_WARNING, +		gf_msg (THIS->name, GF_LOG_WARNING, 0, +                        API_MSG_REG_CBK_FUNC_FAILED,  			"failed to register callback function");  		goto out;  	} diff --git a/api/src/glfs-resolve.c b/api/src/glfs-resolve.c index 2e351e16ecd..60e285d3ae7 100644 --- a/api/src/glfs-resolve.c +++ b/api/src/glfs-resolve.c @@ -29,6 +29,7 @@  #include "common-utils.h"  #include "syncop.h"  #include "call-stub.h" +#include "gfapi-messages.h"  #include "glfs-internal.h" @@ -50,7 +51,7 @@ glfs_first_lookup_safe (xlator_t *subvol)  	ret = syncop_lookup (subvol, &loc, 0, 0, 0, 0);          DECODE_SYNCOP_ERR (ret); -	gf_log (subvol->name, GF_LOG_DEBUG, "first lookup complete %d", ret); +	gf_msg_debug (subvol->name, 0, "first lookup complete %d", ret);  	return ret;  } @@ -102,7 +103,8 @@ glfs_refresh_inode_safe (xlator_t *subvol, inode_t *oldinode)          DECODE_SYNCOP_ERR (ret);  	if (ret) { -		gf_log (subvol->name, GF_LOG_WARNING, +		gf_msg (subvol->name, GF_LOG_WARNING, errno, +                        API_MSG_INODE_REFRESH_FAILED,  			"inode refresh of %s failed: %s",  			uuid_utoa (oldinode->gfid), strerror (errno));  		loc_wipe (&loc); @@ -497,7 +499,8 @@ glfs_resolve_path (struct glfs *fs, xlator_t *subvol, const char *origpath,  	cwd = glfs_cwd_get (fs);          if (NULL == cwd) { -                gf_log (subvol->name, GF_LOG_WARNING, "Failed to get cwd"); +                gf_msg (subvol->name, GF_LOG_WARNING, EIO, +                        API_MSG_GET_CWD_FAILED, "Failed to get cwd");                  errno = EIO;                  goto out;          } @@ -553,7 +556,8 @@ glfs_migrate_fd_locks_safe (struct glfs *fs, xlator_t *oldsubvol, fd_t *oldfd,  				GF_XATTR_LOCKINFO_KEY, NULL, NULL);          DECODE_SYNCOP_ERR (ret);  	if (ret < 0) { -		gf_log (fs->volname, GF_LOG_WARNING, +		gf_msg (fs->volname, GF_LOG_WARNING, errno, +                        API_MSG_FGETXATTR_FAILED,  			"fgetxattr (%s) failed (%s) on graph %s (%d)",  			uuid_utoa_r (oldfd->inode->gfid, uuid1),  			strerror (errno), @@ -562,7 +566,8 @@ glfs_migrate_fd_locks_safe (struct glfs *fs, xlator_t *oldsubvol, fd_t *oldfd,  	}  	if (!dict_get (lockinfo, GF_XATTR_LOCKINFO_KEY)) { -		gf_log (fs->volname, GF_LOG_WARNING, +		gf_msg (fs->volname, GF_LOG_WARNING, 0, +                        API_MSG_LOCKINFO_KEY_MISSING,  			"missing lockinfo key (%s) on graph %s (%d)",  			uuid_utoa_r (oldfd->inode->gfid, uuid1),  			graphid_str (oldsubvol), oldsubvol->graph->id); @@ -572,7 +577,8 @@ glfs_migrate_fd_locks_safe (struct glfs *fs, xlator_t *oldsubvol, fd_t *oldfd,  	ret = syncop_fsetxattr (newsubvol, newfd, lockinfo, 0, NULL, NULL);          DECODE_SYNCOP_ERR (ret);  	if (ret < 0) { -		gf_log (fs->volname, GF_LOG_WARNING, +		gf_msg (fs->volname, GF_LOG_WARNING, 0, +                        API_MSG_FSETXATTR_FAILED,  			"fsetxattr (%s) failed (%s) on graph %s (%d)",  			uuid_utoa_r (newfd->inode->gfid, uuid1),  			strerror (errno), @@ -608,9 +614,9 @@ glfs_migrate_fd_safe (struct glfs *fs, xlator_t *newsubvol, fd_t *oldfd)  		ret = syncop_fsync (oldsubvol, oldfd, 0, NULL, NULL);                  DECODE_SYNCOP_ERR (ret);  		if (ret) { -			gf_log (fs->volname, GF_LOG_WARNING, -				"fsync() failed (%s) on %s graph %s (%d)", -				strerror (errno), +			gf_msg (fs->volname, GF_LOG_WARNING, errno, +                                API_MSG_FSYNC_FAILED, "fsync() failed " +                                "(%s) on %s graph %s (%d)", strerror (errno),  				uuid_utoa_r (oldfd->inode->gfid, uuid1),  				graphid_str (oldsubvol), oldsubvol->graph->id);  		} @@ -618,7 +624,8 @@ glfs_migrate_fd_safe (struct glfs *fs, xlator_t *newsubvol, fd_t *oldfd)  	newinode = glfs_refresh_inode_safe (newsubvol, oldinode);  	if (!newinode) { -		gf_log (fs->volname, GF_LOG_WARNING, +		gf_msg (fs->volname, GF_LOG_WARNING, errno, +                        API_MSG_INODE_REFRESH_FAILED,  			"inode (%s) refresh failed (%s) on graph %s (%d)",  			uuid_utoa_r (oldinode->gfid, uuid1),  			strerror (errno), @@ -628,7 +635,8 @@ glfs_migrate_fd_safe (struct glfs *fs, xlator_t *newsubvol, fd_t *oldfd)  	newfd = fd_create (newinode, getpid());  	if (!newfd) { -		gf_log (fs->volname, GF_LOG_WARNING, +		gf_msg (fs->volname, GF_LOG_WARNING, errno, +                        API_MSG_FDCREATE_FAILED,  			"fd_create (%s) failed (%s) on graph %s (%d)",  			uuid_utoa_r (newinode->gfid, uuid1),  			strerror (errno), @@ -640,7 +648,8 @@ glfs_migrate_fd_safe (struct glfs *fs, xlator_t *newsubvol, fd_t *oldfd)          ret = inode_path (oldfd->inode, NULL, (char **)&loc.path);          if (ret < 0) { -                gf_log (fs->volname, GF_LOG_INFO, "inode_path failed"); +                gf_msg (fs->volname, GF_LOG_INFO, 0, API_MSG_INODE_PATH_FAILED, +                        "inode_path failed");                  goto out;          } @@ -657,7 +666,8 @@ glfs_migrate_fd_safe (struct glfs *fs, xlator_t *newsubvol, fd_t *oldfd)  	loc_wipe (&loc);  	if (ret) { -		gf_log (fs->volname, GF_LOG_WARNING, +		gf_msg (fs->volname, GF_LOG_WARNING, errno, +                        API_MSG_SYNCOP_OPEN_FAILED,  			"syncop_open%s (%s) failed (%s) on graph %s (%d)",  			IA_ISDIR (oldinode->ia_type) ? "dir" : "",  			uuid_utoa_r (newinode->gfid, uuid1), @@ -670,7 +680,8 @@ glfs_migrate_fd_safe (struct glfs *fs, xlator_t *newsubvol, fd_t *oldfd)  					  newfd);  	if (ret) { -		gf_log (fs->volname, GF_LOG_WARNING, +		gf_msg (fs->volname, GF_LOG_WARNING, errno, +                        API_MSG_LOCK_MIGRATE_FAILED,  			"lock migration (%s) failed (%s) on graph %s (%d)",  			uuid_utoa_r (newinode->gfid, uuid1),  			strerror (errno), @@ -758,7 +769,8 @@ __glfs_migrate_openfds (struct glfs *fs, xlator_t *subvol)  	list_for_each_entry (glfd, &fs->openfds, openfds) {  		if (gf_uuid_is_null (glfd->fd->inode->gfid)) { -			gf_log (fs->volname, GF_LOG_INFO, +			gf_msg (fs->volname, GF_LOG_INFO, 0, +                                API_MSG_OPENFD_SKIPPED,  				"skipping openfd %p/%p in graph %s (%d)",  				glfd, glfd->fd,	graphid_str(subvol),  				subvol->graph->id); @@ -789,7 +801,8 @@ __glfs_active_subvol (struct glfs *fs)  	ret = __glfs_first_lookup (fs, new_subvol);  	if (ret) { -		gf_log (fs->volname, GF_LOG_INFO, +		gf_msg (fs->volname, GF_LOG_INFO, errno, +                        API_MSG_FIRST_LOOKUP_GRAPH_FAILED,  			"first lookup on graph %s (%d) failed (%s)",  			graphid_str (new_subvol), new_subvol->graph->id,  			strerror (errno)); @@ -801,7 +814,8 @@ __glfs_active_subvol (struct glfs *fs)  		if (!new_cwd) {  			char buf1[64]; -			gf_log (fs->volname, GF_LOG_INFO, +			gf_msg (fs->volname, GF_LOG_INFO, errno, +                                API_MSG_CWD_GRAPH_REF_FAILED,  				"cwd refresh of %s graph %s (%d) failed (%s)",  				uuid_utoa_r (fs->cwd->gfid, buf1),  				graphid_str (new_subvol), @@ -824,7 +838,8 @@ __glfs_active_subvol (struct glfs *fs)  		inode_unref (new_cwd);  	} -	gf_log (fs->volname, GF_LOG_INFO, "switched to graph %s (%d)", +	gf_msg (fs->volname, GF_LOG_INFO, 0, API_MSG_SWITCHED_GRAPH, +                "switched to graph %s (%d)",  		graphid_str (new_subvol), new_subvol->graph->id);  	return new_subvol; diff --git a/api/src/glfs.c b/api/src/glfs.c index efc9e1f3635..12ca751e34d 100644 --- a/api/src/glfs.c +++ b/api/src/glfs.c @@ -46,6 +46,7 @@  #include "common-utils.h"  #include "syncop.h"  #include "call-stub.h" +#include "gfapi-messages.h"  #include "glfs.h"  #include "glfs-internal.h" @@ -72,8 +73,9 @@ glusterfs_ctx_defaults_init (glusterfs_ctx_t *ctx)          ret = xlator_mem_acct_init (THIS, glfs_mt_end + 1);          if (ret != 0) { -                gf_log (THIS->name, GF_LOG_ERROR, -                   "Memory accounting init failed"); +                gf_msg (THIS->name, GF_LOG_ERROR, ENOMEM, +                        API_MSG_MEM_ACCT_INIT_FAILED, +                        "Memory accounting init failed");                  return ret;          } @@ -198,9 +200,9 @@ create_master (struct glfs *fs)  		goto err;  	if (xlator_set_type (master, "mount/api") == -1) { -		gf_log ("glfs", GF_LOG_ERROR, -			"master xlator for %s initialization failed", -			fs->volname); +		gf_msg ("glfs", GF_LOG_ERROR, 0, +                        API_MSG_MASTER_XLATOR_INIT_FAILED, "master xlator " +                        "for %s initialization failed", fs->volname);  		goto err;  	} @@ -213,7 +215,8 @@ create_master (struct glfs *fs)  	ret = xlator_init (master);  	if (ret) { -		gf_log ("glfs", GF_LOG_ERROR, +		gf_msg ("glfs", GF_LOG_ERROR, 0, +                        API_MSG_GFAPI_XLATOR_INIT_FAILED,  			"failed to initialize gfapi translator");  		goto err;  	} @@ -241,15 +244,15 @@ get_volfp (struct glfs *fs)  	cmd_args = &fs->ctx->cmd_args;  	if ((specfp = fopen (cmd_args->volfile, "r")) == NULL) { -		gf_log ("glfs", GF_LOG_ERROR, +		gf_msg ("glfs", GF_LOG_ERROR, errno, +                        API_MSG_VOLFILE_OPEN_FAILED,  			"volume file %s open failed: %s",  			cmd_args->volfile,  			strerror (errno));  		return NULL;  	} -	gf_log ("glfs", GF_LOG_DEBUG, -		"loading volume file %s", cmd_args->volfile); +	gf_msg_debug ("glfs", 0, "loading volume file %s", cmd_args->volfile);  	return specfp;  } @@ -275,7 +278,8 @@ glfs_volumes_init (struct glfs *fs)  	fp = get_volfp (fs);  	if (!fp) { -		gf_log ("glfs", GF_LOG_ERROR, +		gf_msg ("glfs", GF_LOG_ERROR, ENOENT, +                        API_MSG_VOL_SPEC_FILE_ERROR,  			"Cannot reach volume specification file");  		ret = -1;  		goto out; @@ -801,7 +805,7 @@ priv_glfs_init_done (struct glfs *fs, int ret)  	glfs_init_cbk init_cbk;  	if (!fs) { -		gf_log ("glfs", GF_LOG_ERROR, +		gf_msg ("glfs", GF_LOG_ERROR, EINVAL, API_MSG_GLFS_FSOBJ_NULL,  			"fs is NULL");  		goto out;  	} @@ -857,7 +861,7 @@ glfs_init_async (struct glfs *fs, glfs_init_cbk cbk)  	int  ret = -1;  	if (!fs || !fs->ctx) { -		gf_log ("glfs", GF_LOG_ERROR, +		gf_msg ("glfs", GF_LOG_ERROR, EINVAL, API_MSG_INVALID_ENTRY,  			"fs is not properly initialized.");  		errno = EINVAL;  		return ret; @@ -877,7 +881,7 @@ pub_glfs_init (struct glfs *fs)  	int  ret = -1;  	if (!fs || !fs->ctx) { -		gf_log ("glfs", GF_LOG_ERROR, +		gf_msg ("glfs", GF_LOG_ERROR, EINVAL, API_MSG_INVALID_ENTRY,  			"fs is not properly initialized.");  		errno = EINVAL;  		return ret; @@ -1005,7 +1009,7 @@ pub_glfs_fini (struct glfs *fs)                  {                          /* Do we need to increase countdown? */                          if ((!call_pool->cnt) && (!fs->pin_refcnt)) { -                                gf_log ("glfs", GF_LOG_ERROR, +                                gf_msg_trace ("glfs", 0,                                          "call_pool_cnt - %ld,"                                          "pin_refcnt - %d",                                          call_pool->cnt, fs->pin_refcnt); @@ -1049,7 +1053,8 @@ pub_glfs_fini (struct glfs *fs)                          graph = subvol->graph;                          err = pthread_mutex_lock (&fs->mutex);                          if (err != 0) { -                                gf_log ("glfs", GF_LOG_ERROR, +                                gf_msg ("glfs", GF_LOG_ERROR, err, +                                        API_MSG_FSMUTEX_LOCK_FAILED,                                          "pthread lock on glfs mutex, "                                          "returned error: (%s)", strerror (err));                                  goto fail; @@ -1060,7 +1065,8 @@ pub_glfs_fini (struct glfs *fs)                                          err = pthread_cond_wait (&fs->child_down_cond,                                                                   &fs->mutex);                                          if (err != 0) -                                                gf_log ("glfs", GF_LOG_INFO, +                                                gf_msg ("glfs", GF_LOG_INFO, err, +                                                        API_MSG_COND_WAIT_FAILED,                                                          "%s cond wait failed %s",                                                          subvol->name,                                                          strerror (err)); @@ -1069,7 +1075,8 @@ pub_glfs_fini (struct glfs *fs)                          err = pthread_mutex_unlock (&fs->mutex);                          if (err != 0) { -                                gf_log ("glfs", GF_LOG_ERROR, +                                gf_msg ("glfs", GF_LOG_ERROR, err, +                                        API_MSG_FSMUTEX_UNLOCK_FAILED,                                          "pthread unlock on glfs mutex, "                                          "returned error: (%s)", strerror (err));                                  goto fail; @@ -1145,13 +1152,13 @@ pub_glfs_get_volfile (struct glfs *fs, void *buf, size_t len)          glfs_lock(fs);          if (len >= fs->oldvollen) { -                gf_log ("glfs", GF_LOG_TRACE, "copying %zu to %p", len, buf); +                gf_msg_trace ("glfs", 0, "copying %zu to %p", len, buf);                  memcpy(buf,fs->oldvolfile,len);                  res = len;          }          else {                  res = len - fs->oldvollen; -                gf_log ("glfs", GF_LOG_TRACE, "buffer is %zd too short", -res); +                gf_msg_trace ("glfs", 0, "buffer is %zd too short", -res);          }          glfs_unlock(fs);  | 
