summaryrefslogtreecommitdiffstats
path: root/xlators/protocol/client/src/client.c
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/protocol/client/src/client.c')
-rw-r--r--xlators/protocol/client/src/client.c413
1 files changed, 346 insertions, 67 deletions
diff --git a/xlators/protocol/client/src/client.c b/xlators/protocol/client/src/client.c
index 3ef38fe84..3082656f4 100644
--- a/xlators/protocol/client/src/client.c
+++ b/xlators/protocol/client/src/client.c
@@ -57,8 +57,9 @@ client_submit_request (xlator_t *this, void *req, call_frame_t *frame,
char start_ping = 0;
struct iobref *new_iobref = NULL;
- if (!this || !prog || !frame)
- goto out;
+ GF_VALIDATE_OR_GOTO ("client", this, out);
+ GF_VALIDATE_OR_GOTO (this->name, prog, out);
+ GF_VALIDATE_OR_GOTO (this->name, frame, out);
conf = this->private;
@@ -68,8 +69,11 @@ client_submit_request (xlator_t *this, void *req, call_frame_t *frame,
if (!(conf->connected ||
((prog->prognum == GLUSTER_DUMP_PROGRAM) ||
(prog->prognum == GLUSTER_PMAP_PROGRAM) ||
- ((prog->prognum == GLUSTER_HNDSK_PROGRAM) && (procnum == GF_HNDSK_SETVOLUME)))))
+ ((prog->prognum == GLUSTER_HNDSK_PROGRAM) && (procnum == GF_HNDSK_SETVOLUME))))) {
+ gf_log (this->name, GF_LOG_WARNING,
+ "connection in disconnected state");
goto out;
+ }
iobuf = iobuf_get (this->ctx->iobuf_pool);
if (!iobuf) {
@@ -104,6 +108,10 @@ client_submit_request (xlator_t *this, void *req, call_frame_t *frame,
if (req && sfunc) {
ret = sfunc (iov, req);
if (ret == -1) {
+ /* callingfn so that, we can get to know which xdr
+ function was called */
+ gf_log_callingfn (this->name, GF_LOG_WARNING,
+ "XDR payload creation failed");
goto out;
}
iov.iov_len = ret;
@@ -114,6 +122,10 @@ client_submit_request (xlator_t *this, void *req, call_frame_t *frame,
0, new_iobref, frame, rsphdr, rsphdr_count,
rsp_payload, rsp_payload_count, rsp_iobref);
+ if (ret < 0) {
+ gf_log (this->name, GF_LOG_DEBUG, "rpc_clnt_submit failed");
+ }
+
if (ret == 0) {
pthread_mutex_lock (&conf->rpc->conn.lock);
{
@@ -162,6 +174,12 @@ client_releasedir (xlator_t *this, fd_t *fd)
args.fd = fd;
proc = &conf->fops->proctable[GF_FOP_RELEASEDIR];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_RELEASEDIR]);
+ goto out;
+ }
if (proc->fn) {
frame = create_frame (this, this->ctx->pool);
if (!frame) {
@@ -171,7 +189,7 @@ client_releasedir (xlator_t *this, fd_t *fd)
}
out:
if (ret)
- gf_log (this->name, GF_LOG_TRACE,
+ gf_log (this->name, GF_LOG_WARNING,
"releasedir fop failed");
return 0;
}
@@ -191,6 +209,12 @@ client_release (xlator_t *this, fd_t *fd)
args.fd = fd;
proc = &conf->fops->proctable[GF_FOP_RELEASE];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_RELEASE]);
+ goto out;
+ }
if (proc->fn) {
frame = create_frame (this, this->ctx->pool);
if (!frame) {
@@ -200,7 +224,7 @@ client_release (xlator_t *this, fd_t *fd)
}
out:
if (ret)
- gf_log (this->name, GF_LOG_TRACE,
+ gf_log (this->name, GF_LOG_WARNING,
"release fop failed");
return 0;
}
@@ -223,6 +247,12 @@ client_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc,
args.dict = xattr_req;
proc = &conf->fops->proctable[GF_FOP_LOOKUP];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_LOOKUP]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -250,13 +280,18 @@ client_stat (call_frame_t *frame, xlator_t *this, loc_t *loc)
args.loc = loc;
proc = &conf->fops->proctable[GF_FOP_STAT];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_STAT]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
if (ret)
STACK_UNWIND_STRICT (stat, frame, -1, ENOTCONN, NULL);
-
return 0;
}
@@ -277,6 +312,12 @@ client_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset)
args.offset = offset;
proc = &conf->fops->proctable[GF_FOP_TRUNCATE];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_TRUNCATE]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -304,6 +345,12 @@ client_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset)
args.offset = offset;
proc = &conf->fops->proctable[GF_FOP_FTRUNCATE];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_FTRUNCATE]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -331,6 +378,12 @@ client_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask)
args.mask = mask;
proc = &conf->fops->proctable[GF_FOP_ACCESS];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_ACCESS]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -359,6 +412,12 @@ client_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size)
args.size = size;
proc = &conf->fops->proctable[GF_FOP_READLINK];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_READLINK]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -388,6 +447,12 @@ client_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,
args.dict = params;
proc = &conf->fops->proctable[GF_FOP_MKNOD];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_MKNOD]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -417,6 +482,12 @@ client_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc,
args.dict = params;
proc = &conf->fops->proctable[GF_FOP_MKDIR];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_MKDIR]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -444,6 +515,12 @@ client_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc)
args.loc = loc;
proc = &conf->fops->proctable[GF_FOP_UNLINK];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_UNLINK]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -470,6 +547,12 @@ client_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags)
args.flags = flags;
proc = &conf->fops->proctable[GF_FOP_RMDIR];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_RMDIR]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -500,6 +583,12 @@ client_symlink (call_frame_t *frame, xlator_t *this, const char *linkpath,
args.dict = params;
proc = &conf->fops->proctable[GF_FOP_SYMLINK];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_SYMLINK]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -528,6 +617,12 @@ client_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc,
args.oldloc = oldloc;
args.newloc = newloc;
proc = &conf->fops->proctable[GF_FOP_RENAME];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_RENAME]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -557,6 +652,12 @@ client_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc,
args.newloc = newloc;
proc = &conf->fops->proctable[GF_FOP_LINK];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_LINK]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -589,6 +690,12 @@ client_create (call_frame_t *frame, xlator_t *this, loc_t *loc,
args.dict = params;
proc = &conf->fops->proctable[GF_FOP_CREATE];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_CREATE]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -620,6 +727,12 @@ client_open (call_frame_t *frame, xlator_t *this, loc_t *loc,
args.wbflags = wbflags;
proc = &conf->fops->proctable[GF_FOP_OPEN];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_OPEN]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
@@ -650,6 +763,12 @@ client_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,
args.offset = offset;
proc = &conf->fops->proctable[GF_FOP_READ];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_READ]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
@@ -685,6 +804,12 @@ client_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,
args.iobref = iobref;
proc = &conf->fops->proctable[GF_FOP_WRITE];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_WRITE]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -711,6 +836,12 @@ client_flush (call_frame_t *frame, xlator_t *this, fd_t *fd)
args.fd = fd;
proc = &conf->fops->proctable[GF_FOP_FLUSH];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_FLUSH]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -739,6 +870,12 @@ client_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd,
args.flags = flags;
proc = &conf->fops->proctable[GF_FOP_FSYNC];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_FSYNC]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -765,6 +902,12 @@ client_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd)
args.fd = fd;
proc = &conf->fops->proctable[GF_FOP_FSTAT];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_FSTAT]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -792,6 +935,12 @@ client_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd)
args.fd = fd;
proc = &conf->fops->proctable[GF_FOP_OPENDIR];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_OPENDIR]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -819,6 +968,12 @@ client_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags)
args.flags = flags;
proc = &conf->fops->proctable[GF_FOP_FSYNCDIR];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_FSYNCDIR]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -845,6 +1000,12 @@ client_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc)
args.loc = loc;
proc = &conf->fops->proctable[GF_FOP_STATFS];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_STATFS]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -861,12 +1022,16 @@ is_client_rpc_init_command (dict_t *dict, xlator_t *this,
gf_boolean_t ret = _gf_false;
int dict_ret = -1;
- if (!strstr (this->name, "replace-brick"))
+ if (!strstr (this->name, "replace-brick")) {
+ gf_log (this->name, GF_LOG_TRACE, "name is !replace-brick");
goto out;
-
+ }
dict_ret = dict_get_str (dict, CLIENT_CMD_CONNECT, value);
- if (dict_ret)
+ if (dict_ret) {
+ gf_log (this->name, GF_LOG_TRACE, "key %s not present",
+ CLIENT_CMD_CONNECT);
goto out;
+ }
ret = _gf_true;
@@ -882,12 +1047,17 @@ is_client_rpc_destroy_command (dict_t *dict, xlator_t *this)
int dict_ret = -1;
char *dummy = NULL;
- if (strncmp (this->name, "replace-brick", 13))
+ if (strncmp (this->name, "replace-brick", 13)) {
+ gf_log (this->name, GF_LOG_TRACE, "name is !replace-brick");
goto out;
+ }
dict_ret = dict_get_str (dict, CLIENT_CMD_DISCONNECT, &dummy);
- if (dict_ret)
+ if (dict_ret) {
+ gf_log (this->name, GF_LOG_TRACE, "key %s not present",
+ CLIENT_CMD_DISCONNECT);
goto out;
+ }
ret = _gf_true;
@@ -925,8 +1095,6 @@ client_set_remote_options (char *value, xlator_t *this)
host_dup = gf_strdup (host);
if (!host_dup) {
- gf_log (this->name, GF_LOG_ERROR,
- "Out of memory");
goto out;
}
@@ -939,8 +1107,6 @@ client_set_remote_options (char *value, xlator_t *this)
subvol_dup = gf_strdup (subvol);
if (!subvol_dup) {
- gf_log (this->name, GF_LOG_ERROR,
- "Out of memory");
goto out;
}
@@ -987,6 +1153,7 @@ client_setxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *dict,
if (is_client_rpc_init_command (dict, this, &value) == _gf_true) {
GF_ASSERT (value);
+ gf_log (this->name, GF_LOG_INFO, "client rpc init command");
ret = client_set_remote_options (value, this);
if (ret)
ret = client_init_rpc (this);
@@ -1000,6 +1167,7 @@ client_setxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *dict,
}
if (is_client_rpc_destroy_command (dict, this) == _gf_true) {
+ gf_log (this->name, GF_LOG_INFO, "client rpc destroy command");
ret = client_destroy_rpc (this);
if (ret) {
op_ret = 0;
@@ -1021,11 +1189,15 @@ client_setxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *dict,
args.flags = flags;
proc = &conf->fops->proctable[GF_FOP_SETXATTR];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_SETXATTR]);
+ goto out;
+ }
if (proc->fn) {
ret = proc->fn (frame, this, &args);
if (ret) {
- op_ret = -1;
- op_errno = ENOTCONN;
need_unwind = 1;
}
}
@@ -1056,6 +1228,12 @@ client_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd,
args.flags = flags;
proc = &conf->fops->proctable[GF_FOP_FSETXATTR];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_FSETXATTR]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -1085,6 +1263,12 @@ client_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd,
args.name = name;
proc = &conf->fops->proctable[GF_FOP_FGETXATTR];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_FGETXATTR]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -1113,6 +1297,12 @@ client_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc,
args.loc = loc;
proc = &conf->fops->proctable[GF_FOP_GETXATTR];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_GETXATTR]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -1142,6 +1332,12 @@ client_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc,
args.dict = dict;
proc = &conf->fops->proctable[GF_FOP_XATTROP];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_XATTROP]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -1171,6 +1367,12 @@ client_fxattrop (call_frame_t *frame, xlator_t *this, fd_t *fd,
args.dict = dict;
proc = &conf->fops->proctable[GF_FOP_FXATTROP];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_FXATTROP]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -1199,6 +1401,12 @@ client_removexattr (call_frame_t *frame, xlator_t *this, loc_t *loc,
args.loc = loc;
proc = &conf->fops->proctable[GF_FOP_REMOVEXATTR];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_REMOVEXATTR]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -1227,6 +1435,12 @@ client_lk (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t cmd,
args.flock = lock;
proc = &conf->fops->proctable[GF_FOP_LK];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_LK]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -1256,6 +1470,12 @@ client_inodelk (call_frame_t *frame, xlator_t *this, const char *volume,
args.volume = volume;
proc = &conf->fops->proctable[GF_FOP_INODELK];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_INODELK]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -1286,6 +1506,12 @@ client_finodelk (call_frame_t *frame, xlator_t *this, const char *volume,
args.volume = volume;
proc = &conf->fops->proctable[GF_FOP_FINODELK];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_FINODELK]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -1317,6 +1543,12 @@ client_entrylk (call_frame_t *frame, xlator_t *this, const char *volume,
args.cmd_entrylk = cmd;
proc = &conf->fops->proctable[GF_FOP_ENTRYLK];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_ENTRYLK]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -1349,6 +1581,12 @@ client_fentrylk (call_frame_t *frame, xlator_t *this, const char *volume,
args.cmd_entrylk = cmd;
proc = &conf->fops->proctable[GF_FOP_FENTRYLK];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_FENTRYLK]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -1377,6 +1615,12 @@ client_rchecksum (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset,
args.len = len;
proc = &conf->fops->proctable[GF_FOP_RCHECKSUM];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_RCHECKSUM]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -1404,6 +1648,12 @@ client_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd,
args.offset = off;
proc = &conf->fops->proctable[GF_FOP_READDIR];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_READDIR]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -1432,6 +1682,12 @@ client_readdirp (call_frame_t *frame, xlator_t *this, fd_t *fd,
args.offset = off;
proc = &conf->fops->proctable[GF_FOP_READDIRP];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_READDIRP]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -1460,6 +1716,12 @@ client_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc,
args.valid = valid;
proc = &conf->fops->proctable[GF_FOP_SETATTR];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_SETATTR]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -1487,6 +1749,12 @@ client_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd,
args.valid = valid;
proc = &conf->fops->proctable[GF_FOP_FSETATTR];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_FSETATTR]);
+ goto out;
+ }
if (proc->fn)
ret = proc->fn (frame, this, &args);
out:
@@ -1515,6 +1783,12 @@ client_getspec (call_frame_t *frame, xlator_t *this, const char *key,
/* For all other xlators, getspec is an fop, hence its in fops table */
proc = &conf->fops->proctable[GF_FOP_GETSPEC];
+ if (!proc) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "rpc procedure not found for %s",
+ gf_fop_list[GF_FOP_GETSPEC]);
+ goto out;
+ }
if (proc->fn) {
/* But at protocol level, this is handshake */
ret = proc->fn (frame, this, &args);
@@ -1560,8 +1834,9 @@ client_rpc_notify (struct rpc_clnt *rpc, void *mydata, rpc_clnt_event_t event,
this = mydata;
if (!this || !this->private) {
gf_log ("client", GF_LOG_ERROR,
- (this != NULL)?"private structure of the xlator this is NULL":
- "xlator this is NULL");
+ (this != NULL) ?
+ "private structure of the xlator is NULL":
+ "xlator is NULL");
goto out;
}
@@ -1575,18 +1850,18 @@ client_rpc_notify (struct rpc_clnt *rpc, void *mydata, rpc_clnt_event_t event,
ret = dict_get_str (this->options, "disable-handshake",
&handshake);
- gf_log (this->name, GF_LOG_TRACE, "got RPC_CLNT_CONNECT");
+ gf_log (this->name, GF_LOG_DEBUG, "got RPC_CLNT_CONNECT");
if ((ret < 0) || (strcasecmp (handshake, "on"))) {
ret = client_handshake (this, conf->rpc);
if (ret)
- gf_log (this->name, GF_LOG_DEBUG,
+ gf_log (this->name, GF_LOG_WARNING,
"handshake msg returned %d", ret);
} else {
//conf->rpc->connected = 1;
ret = default_notify (this, GF_EVENT_CHILD_UP, NULL);
if (ret)
- gf_log (this->name, GF_LOG_DEBUG,
+ gf_log (this->name, GF_LOG_WARNING,
"default notify failed");
}
break;
@@ -1635,8 +1910,8 @@ notify (xlator_t *this, int32_t event, void *data, ...)
switch (event) {
case GF_EVENT_PARENT_UP:
{
- gf_log (this->name, GF_LOG_DEBUG,
- "got GF_EVENT_PARENT_UP, attempting connect "
+ gf_log (this->name, GF_LOG_INFO,
+ "parent translators are ready, attempting connect "
"on transport");
rpc_clnt_start (conf->rpc);
@@ -1657,15 +1932,15 @@ notify (xlator_t *this, int32_t event, void *data, ...)
int
build_client_config (xlator_t *this, clnt_conf_t *conf)
{
- int ret = 0;
+ int ret = -1;
if (!conf)
- return -1;
+ goto out;
ret = dict_get_int32 (this->options, "frame-timeout",
&conf->rpc_conf.rpc_timeout);
if (ret >= 0) {
- gf_log (this->name, GF_LOG_DEBUG,
+ gf_log (this->name, GF_LOG_INFO,
"setting frame-timeout to %d",
conf->rpc_conf.rpc_timeout);
} else {
@@ -1677,7 +1952,7 @@ build_client_config (xlator_t *this, clnt_conf_t *conf)
ret = dict_get_int32 (this->options, "remote-port",
&conf->rpc_conf.remote_port);
if (ret >= 0) {
- gf_log (this->name, GF_LOG_DEBUG,
+ gf_log (this->name, GF_LOG_INFO,
"remote-port is %d", conf->rpc_conf.remote_port);
} else {
gf_log (this->name, GF_LOG_DEBUG,
@@ -1687,7 +1962,7 @@ build_client_config (xlator_t *this, clnt_conf_t *conf)
ret = dict_get_int32 (this->options, "ping-timeout",
&conf->opt.ping_timeout);
if (ret >= 0) {
- gf_log (this->name, GF_LOG_DEBUG,
+ gf_log (this->name, GF_LOG_INFO,
"setting ping-timeout to %d", conf->opt.ping_timeout);
} else {
gf_log (this->name, GF_LOG_DEBUG,
@@ -1699,7 +1974,7 @@ build_client_config (xlator_t *this, clnt_conf_t *conf)
&conf->opt.remote_subvolume);
if (ret) {
/* This is valid only if 'cluster/pump' is the parent */
- gf_log (this->name, GF_LOG_NORMAL,
+ gf_log (this->name, GF_LOG_WARNING,
"option 'remote-subvolume' not given");
ret = 1;
goto out;
@@ -1723,7 +1998,7 @@ mem_acct_init (xlator_t *this)
if (ret != 0) {
gf_log (this->name, GF_LOG_ERROR, "Memory accounting init"
- "failed");
+ "failed");
return ret;
}
@@ -1748,7 +2023,7 @@ client_destroy_rpc (xlator_t *this)
goto out;
}
- gf_log (this->name, GF_LOG_DEBUG,
+ gf_log (this->name, GF_LOG_WARNING,
"RPC destory called on already destroyed "
"connection");
@@ -1765,26 +2040,33 @@ client_init_rpc (xlator_t *this)
conf = this->private;
if (conf->rpc) {
- gf_log (this->name, GF_LOG_DEBUG,
+ gf_log (this->name, GF_LOG_WARNING,
"client rpc already init'ed");
ret = -1;
goto out;
}
conf->rpc = rpc_clnt_new (this->options, this->ctx, this->name);
- if (!conf->rpc)
+ if (!conf->rpc) {
+ gf_log (this->name, GF_LOG_ERROR, "failed to initialize RPC");
goto out;
+ }
ret = rpc_clnt_register_notify (conf->rpc, client_rpc_notify, this);
- if (ret)
+ if (ret) {
+ gf_log (this->name, GF_LOG_ERROR, "failed to register notify");
goto out;
+ }
conf->handshake = &clnt_handshake_prog;
conf->dump = &clnt_dump_prog;
ret = rpcclnt_cbk_program_register (conf->rpc, &gluster_cbk_prog);
- if (ret)
+ if (ret) {
+ gf_log (this->name, GF_LOG_ERROR,
+ "failed to register callback program");
goto out;
+ }
ret = 0;
@@ -1800,30 +2082,30 @@ validate_options (xlator_t *this, dict_t *options, char **op_errstr)
int timeout_ret=0;
int ping_timeout;
int frame_timeout;
-
-
+
+
timeout_ret = dict_get_int32 (options, "frame-timeout",
&frame_timeout);
if (timeout_ret == 0) {
if (frame_timeout < 5 ) {
- gf_log (this->name, GF_LOG_WARNING, "Validation"
- "'option frame-timeout %d failed , Min value"
- " can be 5", frame_timeout);
+ gf_log (this->name, GF_LOG_WARNING, "validation of "
+ "'option frame-timeout %d failed, min value"
+ " can be 5", frame_timeout);
*op_errstr = gf_strdup ("Error, Min Value 5");
ret = -1;
goto out;
}
if (frame_timeout > 86400 ) {
- gf_log (this->name, GF_LOG_WARNING, "Reconfiguration"
- "'option frame-timeout %d failed , Max value"
- "can be 86400", frame_timeout );
+ gf_log (this->name, GF_LOG_WARNING, "reconfiguration of"
+ " 'option frame-timeout %d failed , max value "
+ "can be 86400", frame_timeout );
*op_errstr = gf_strdup ("Error, Max Value 86400");
ret = -1;
goto out;
}
-
+
gf_log (this->name, GF_LOG_DEBUG,
"validation otion frame-timeout to %d",
frame_timeout);
@@ -1836,8 +2118,8 @@ validate_options (xlator_t *this, dict_t *options, char **op_errstr)
if (ping_timeout < 5 ) {
gf_log (this->name, GF_LOG_WARNING, "Reconfiguration"
- "'option ping-timeout %d failed , Min value"
- " can be 5", ping_timeout);
+ " 'option ping-timeout %d failed , Min value"
+ " can be 5", ping_timeout);
*op_errstr = gf_strdup ("Error, Min Value 5");
ret = -1;
goto out;
@@ -1845,40 +2127,37 @@ validate_options (xlator_t *this, dict_t *options, char **op_errstr)
if (ping_timeout > 1013 ) {
gf_log (this->name, GF_LOG_WARNING, "Reconfiguration"
- "'option frame-timeout %d failed , Max value"
- "can be 1013,", frame_timeout);
+ " 'option frame-timeout %d failed , Max value"
+ " can be 1013,", frame_timeout);
*op_errstr = gf_strdup ("Error, Max Value 1013");
ret = -1;
goto out;
}
-
+
gf_log (this->name, GF_LOG_DEBUG, "Validated "
- "'option ping-timeout' to %d", ping_timeout);
-
+ "'option ping-timeout' to %d", ping_timeout);
+
}
ret = 0;
out:
- return ret;
-
+ return ret;
}
int
reconfigure (xlator_t *this, dict_t *options)
{
- int ret = 0;
- int timeout_ret = 0;
- int ping_timeout = 0;
- int frame_timeout = 0;
- clnt_conf_t *conf = NULL;
- char *old_remote_subvol = NULL;
- char *new_remote_subvol = NULL;
- char *old_remote_host = NULL;
- char *new_remote_host = NULL;
- int subvol_ret = 0;
-
-
+ clnt_conf_t *conf = NULL;
+ int ret = 0;
+ int timeout_ret = 0;
+ int ping_timeout = 0;
+ int frame_timeout = 0;
+ int subvol_ret = 0;
+ char *old_remote_subvol = NULL;
+ char *new_remote_subvol = NULL;
+ char *old_remote_host = NULL;
+ char *new_remote_host = NULL;
conf = this->private;
@@ -2076,7 +2355,7 @@ client_priv_dump (xlator_t *this)
ret = pthread_mutex_trylock(&conf->lock);
if (ret) {
- gf_log("", GF_LOG_WARNING, "Unable to lock client %s"
+ gf_log(this->name, GF_LOG_WARNING, "Unable to lock client %s"
" errno: %d", this->name, errno);
return -1;
}