diff options
Diffstat (limited to 'glusterfsd')
-rw-r--r-- | glusterfsd/src/Makefile.am | 5 | ||||
-rw-r--r-- | glusterfsd/src/gf_attach.c | 45 | ||||
-rw-r--r-- | glusterfsd/src/glusterfsd-messages.h | 54 | ||||
-rw-r--r-- | glusterfsd/src/glusterfsd-mgmt.c | 70 | ||||
-rw-r--r-- | glusterfsd/src/glusterfsd.c | 153 |
5 files changed, 182 insertions, 145 deletions
diff --git a/glusterfsd/src/Makefile.am b/glusterfsd/src/Makefile.am index 7b8d1dbf1fb..a0a778158d8 100644 --- a/glusterfsd/src/Makefile.am +++ b/glusterfsd/src/Makefile.am @@ -6,14 +6,15 @@ endif glusterfsd_SOURCES = glusterfsd.c glusterfsd-mgmt.c glusterfsd_LDADD = $(top_builddir)/libglusterfs/src/libglusterfs.la \ $(top_builddir)/rpc/rpc-lib/src/libgfrpc.la \ - $(top_builddir)/rpc/xdr/src/libgfxdr.la ${GF_LDADD} -glusterfsd_LDFLAGS = $(GF_LDFLAGS) $(LIB_DL) + $(top_builddir)/rpc/xdr/src/libgfxdr.la $(GF_LDADD) $(LIB_DL) +glusterfsd_LDFLAGS = $(GF_LDFLAGS) gf_attach_SOURCES = gf_attach.c gf_attach_LDADD = $(top_builddir)/libglusterfs/src/libglusterfs.la \ $(top_builddir)/api/src/libgfapi.la \ $(top_builddir)/rpc/rpc-lib/src/libgfrpc.la \ $(top_builddir)/rpc/xdr/src/libgfxdr.la +gf_attach_LDFLAGS = $(GF_LDFLAGS) noinst_HEADERS = glusterfsd.h glusterfsd-mem-types.h glusterfsd-messages.h diff --git a/glusterfsd/src/gf_attach.c b/glusterfsd/src/gf_attach.c index cb6c0f59b0b..c553b0b1f61 100644 --- a/glusterfsd/src/gf_attach.c +++ b/glusterfsd/src/gf_attach.c @@ -19,9 +19,16 @@ #include "xdr-generic.h" #include "glusterd1-xdr.h" +/* In seconds */ +#define CONNECT_TIMEOUT 60 +#define REPLY_TIMEOUT 120 + int done = 0; int rpc_status; +pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; +pthread_cond_t cond = PTHREAD_COND_INITIALIZER; + struct rpc_clnt_procedure gf_attach_actors[GLUSTERD_BRICK_MAXVALUE] = { [GLUSTERD_BRICK_NULL] = {"NULL", NULL}, [GLUSTERD_BRICK_OP] = {"BRICK_OP", NULL}, @@ -38,8 +45,12 @@ struct rpc_clnt_program gf_attach_prog = { int32_t my_callback(struct rpc_req *req, struct iovec *iov, int count, void *frame) { + pthread_mutex_lock(&mutex); rpc_status = req->rpc_status; done = 1; + /* Signal main thread which is the only waiter */ + pthread_cond_signal(&cond); + pthread_mutex_unlock(&mutex); return 0; } @@ -48,6 +59,7 @@ int send_brick_req(xlator_t *this, struct rpc_clnt *rpc, char *path, int op) { int ret = -1; + struct timespec ts; struct iobuf *iobuf = NULL; struct iobref *iobref = NULL; struct iovec iov = { @@ -57,7 +69,6 @@ send_brick_req(xlator_t *this, struct rpc_clnt *rpc, char *path, int op) call_frame_t *frame = NULL; gd1_mgmt_brick_op_req brick_req; void *req = &brick_req; - int i; brick_req.op = op; brick_req.name = path; @@ -87,12 +98,20 @@ send_brick_req(xlator_t *this, struct rpc_clnt *rpc, char *path, int op) iov.iov_len = ret; - for (i = 0; i < 60; ++i) { - if (rpc->conn.connected) { - break; - } - sleep(1); + /* Wait for connection */ + timespec_now_realtime(&ts); + ts.tv_sec += CONNECT_TIMEOUT; + pthread_mutex_lock(&rpc->conn.lock); + { + while (!rpc->conn.connected) + if (pthread_cond_timedwait(&rpc->conn.cond, &rpc->conn.lock, &ts) == + ETIMEDOUT) { + fprintf(stderr, "timeout waiting for RPC connection\n"); + pthread_mutex_unlock(&rpc->conn.lock); + return EXIT_FAILURE; + } } + pthread_mutex_unlock(&rpc->conn.lock); frame = create_frame(this, this->ctx->pool); if (!frame) { @@ -104,9 +123,19 @@ send_brick_req(xlator_t *this, struct rpc_clnt *rpc, char *path, int op) ret = rpc_clnt_submit(rpc, &gf_attach_prog, op, my_callback, &iov, 1, NULL, 0, iobref, frame, NULL, 0, NULL, 0, NULL); if (!ret) { - for (i = 0; !done && (i < 120); ++i) { - sleep(1); + /* OK, wait for callback */ + timespec_now_realtime(&ts); + ts.tv_sec += REPLY_TIMEOUT; + pthread_mutex_lock(&mutex); + { + while (!done) + if (pthread_cond_timedwait(&cond, &mutex, &ts) == ETIMEDOUT) { + fprintf(stderr, "timeout waiting for RPC reply\n"); + pthread_mutex_unlock(&mutex); + return EXIT_FAILURE; + } } + pthread_mutex_unlock(&mutex); } out: diff --git a/glusterfsd/src/glusterfsd-messages.h b/glusterfsd/src/glusterfsd-messages.h index 8e824ecc458..0cdbffa71ea 100644 --- a/glusterfsd/src/glusterfsd-messages.h +++ b/glusterfsd/src/glusterfsd-messages.h @@ -34,10 +34,60 @@ GLFS_MSGID( glusterfsd_msg_28, glusterfsd_msg_29, glusterfsd_msg_30, glusterfsd_msg_31, glusterfsd_msg_32, glusterfsd_msg_33, glusterfsd_msg_34, glusterfsd_msg_35, glusterfsd_msg_36, glusterfsd_msg_37, glusterfsd_msg_38, glusterfsd_msg_39, - glusterfsd_msg_40, glusterfsd_msg_41, glusterfsd_msg_42, glusterfsd_msg_43); + glusterfsd_msg_40, glusterfsd_msg_41, glusterfsd_msg_42, glusterfsd_msg_43, + glusterfsd_msg_029, glusterfsd_msg_041, glusterfsd_msg_042); #define glusterfsd_msg_1_STR "Could not create absolute mountpoint path" #define glusterfsd_msg_2_STR "Could not get current working directory" -#define glusterfsd_msg_3_STR "Failed to set dict value for key" +#define glusterfsd_msg_4_STR "failed to set mount-point to options dictionary" +#define glusterfsd_msg_3_STR "failed to set dict value for key" +#define glusterfsd_msg_5_STR "failed to set disable for key" +#define glusterfsd_msg_6_STR "failed to set enable for key" +#define glusterfsd_msg_7_STR \ + "Not a client process, not performing mount operation" +#define glusterfsd_msg_8_STR "MOUNT_POINT initialization failed" +#define glusterfsd_msg_9_STR "loading volume file failed" +#define glusterfsd_msg_10_STR "xlator option is invalid" +#define glusterfsd_msg_11_STR "Fetching the volume file from server..." +#define glusterfsd_msg_12_STR "volume initialization failed" +#define glusterfsd_msg_34_STR "memory init failed" +#define glusterfsd_msg_13_STR "ERROR: glusterfs uuid generation failed" +#define glusterfsd_msg_14_STR "ERROR: glusterfs pool creation failed" +#define glusterfsd_msg_15_STR \ + "ERROR: '--volfile-id' is mandatory if '-s' OR '--volfile-server' option " \ + "is given" +#define glusterfsd_msg_16_STR "ERROR: parsing the volfile failed" +#define glusterfsd_msg_33_STR \ + "obsolete option '--volfile-max-fecth-attempts or fetch-attempts' was " \ + "provided" +#define glusterfsd_msg_17_STR "pidfile open failed" +#define glusterfsd_msg_18_STR "pidfile lock failed" +#define glusterfsd_msg_20_STR "pidfile truncation failed" +#define glusterfsd_msg_21_STR "pidfile write failed" +#define glusterfsd_msg_22_STR "failed to exeute pthread_sigmask" +#define glusterfsd_msg_23_STR "failed to create pthread" +#define glusterfsd_msg_24_STR "daemonization failed" +#define glusterfsd_msg_25_STR "mount failed" +#define glusterfsd_msg_26_STR "failed to construct the graph" +#define glusterfsd_msg_27_STR "fuse xlator cannot be specified in volume file" +#define glusterfsd_msg_28_STR "Cannot reach volume specification file" +#define glusterfsd_msg_29_STR "ERROR: glusterfsd context not initialized" +#define glusterfsd_msg_43_STR \ + "command line argument --brick-mux is valid only for brick process" +#define glusterfsd_msg_029_STR "failed to create command line string" +#define glusterfsd_msg_30_STR "Started running version" +#define glusterfsd_msg_31_STR "Could not create new sync-environment" +#define glusterfsd_msg_40_STR "No change in volfile, countinuing" +#define glusterfsd_msg_39_STR "Unable to create/delete temporary file" +#define glusterfsd_msg_38_STR \ + "Not processing brick-op since volume graph is not yet active" +#define glusterfsd_msg_35_STR "rpc req buffer unserialization failed" +#define glusterfsd_msg_36_STR "problem in xlator loading" +#define glusterfsd_msg_37_STR "failed to get dict value" +#define glusterfsd_msg_41_STR "received attach request for volfile" +#define glusterfsd_msg_42_STR "failed to unserialize xdata to dictionary" +#define glusterfsd_msg_041_STR "can't detach. flie not found" +#define glusterfsd_msg_042_STR \ + "couldnot detach old graph. Aborting the reconfiguration operation" #endif /* !_GLUSTERFSD_MESSAGES_H_ */ diff --git a/glusterfsd/src/glusterfsd-mgmt.c b/glusterfsd/src/glusterfsd-mgmt.c index 65446ab05c1..eaf6796e4c3 100644 --- a/glusterfsd/src/glusterfsd-mgmt.c +++ b/glusterfsd/src/glusterfsd-mgmt.c @@ -105,8 +105,8 @@ mgmt_process_volfile(const char *volfile, ssize_t size, char *volfile_id, if (!memcmp(sha256_hash, volfile_obj->volfile_checksum, sizeof(volfile_obj->volfile_checksum))) { UNLOCK(&ctx->volfile_lock); - gf_msg(THIS->name, GF_LOG_INFO, 0, glusterfsd_msg_40, - "No change in volfile, continuing"); + gf_smsg(THIS->name, GF_LOG_INFO, 0, glusterfsd_msg_40, + NULL); goto out; } volfile_tmp = volfile_obj; @@ -118,8 +118,8 @@ mgmt_process_volfile(const char *volfile, ssize_t size, char *volfile_id, tmp_fd = mkstemp(template); if (-1 == tmp_fd) { UNLOCK(&ctx->volfile_lock); - gf_msg(THIS->name, GF_LOG_ERROR, 0, glusterfsd_msg_39, - "Unable to create temporary file: %s", template); + gf_smsg(THIS->name, GF_LOG_ERROR, 0, glusterfsd_msg_39, + "create template=%s", template, NULL); ret = -1; goto out; } @@ -129,8 +129,8 @@ mgmt_process_volfile(const char *volfile, ssize_t size, char *volfile_id, */ ret = sys_unlink(template); if (ret < 0) { - gf_msg(THIS->name, GF_LOG_INFO, 0, glusterfsd_msg_39, - "Unable to delete temporary file: %s", template); + gf_smsg(THIS->name, GF_LOG_INFO, 0, glusterfsd_msg_39, + "delete template=%s", template, NULL); ret = 0; } @@ -205,6 +205,7 @@ glusterfs_serialize_reply(rpcsvc_request_t *req, void *arg, retlen = xdr_serialize_generic(*outmsg, arg, xdrproc); if (retlen == -1) { gf_log(THIS->name, GF_LOG_ERROR, "Failed to encode message"); + GF_FREE(iob); goto ret; } @@ -628,7 +629,7 @@ glusterfs_volume_top_perf(const char *brick_path, dict_t *dict, goto out; } - time = (end.tv_sec - begin.tv_sec) * 1e6 + (end.tv_usec - begin.tv_usec); + time = gf_tvdiff(&begin, &end); throughput = total_blks / time; gf_log("glusterd", GF_LOG_INFO, "Throughput %.2f Mbps time %.2f secs " @@ -684,7 +685,7 @@ glusterfs_volume_top_perf(const char *brick_path, dict_t *dict, goto out; } - time = (end.tv_sec - begin.tv_sec) * 1e6 + (end.tv_usec - begin.tv_usec); + time = gf_tvdiff(&begin, &end); throughput = total_blks / time; gf_log("glusterd", GF_LOG_INFO, "Throughput %.2f Mbps time %.2f secs " @@ -747,10 +748,8 @@ glusterfs_handle_translator_op(rpcsvc_request_t *req) active = ctx->active; if (!active) { ret = -1; - gf_msg(this->name, GF_LOG_ERROR, EAGAIN, glusterfsd_msg_38, - "Not processing brick-op no. %d since volume graph is " - "not yet active.", - xlator_req.op); + gf_smsg(this->name, GF_LOG_ERROR, EAGAIN, glusterfsd_msg_38, + "brick-op_no.=%d", xlator_req.op, NULL); goto out; } any = active->first; @@ -869,8 +868,7 @@ glusterfs_handle_bitrot(rpcsvc_request_t *req) xlator_req.input.input_len, &input); if (ret < 0) { - gf_msg(this->name, GF_LOG_ERROR, 0, glusterfsd_msg_35, - "rpc req buffer unserialization failed."); + gf_smsg(this->name, GF_LOG_ERROR, 0, glusterfsd_msg_35, NULL); goto out; } @@ -879,8 +877,7 @@ glusterfs_handle_bitrot(rpcsvc_request_t *req) xlator = xlator_search_by_name(any, xname); if (!xlator) { snprintf(msg, sizeof(msg), "xlator %s is not loaded", xname); - gf_msg(this->name, GF_LOG_ERROR, 0, glusterfsd_msg_36, - "problem in xlator loading."); + gf_smsg(this->name, GF_LOG_ERROR, 0, glusterfsd_msg_36, NULL); goto out; } @@ -893,8 +890,7 @@ glusterfs_handle_bitrot(rpcsvc_request_t *req) ret = dict_get_str(input, "scrub-value", &scrub_opt); if (ret) { snprintf(msg, sizeof(msg), "Failed to get scrub value"); - gf_msg(this->name, GF_LOG_ERROR, 0, glusterfsd_msg_37, - "failed to get dict value"); + gf_smsg(this->name, GF_LOG_ERROR, 0, glusterfsd_msg_37, NULL); ret = -1; goto out; } @@ -977,10 +973,8 @@ glusterfs_handle_attach(rpcsvc_request_t *req) nextchild = newgraph->first; ret = xlator_notify(nextchild, GF_EVENT_PARENT_UP, nextchild); if (ret) { - gf_msg(this->name, GF_LOG_ERROR, 0, LG_MSG_EVENT_NOTIFY_FAILED, - "Parent up notification " - "failed for %s ", - nextchild->name); + gf_smsg(this->name, GF_LOG_ERROR, 0, LG_MSG_EVENT_NOTIFY_FAILED, + "event=ParentUp", "name=%s", nextchild->name, NULL); goto unlock; } /* we need a protocol/server xlator as @@ -1037,10 +1031,8 @@ glusterfs_handle_svc_attach(rpcsvc_request_t *req) goto out; } - gf_msg(THIS->name, GF_LOG_INFO, 0, glusterfsd_msg_41, - "received attach " - "request for volfile-id=%s", - xlator_req.name); + gf_smsg(THIS->name, GF_LOG_INFO, 0, glusterfsd_msg_41, "volfile-id=%s", + xlator_req.name, NULL); dict = dict_new(); if (!dict) { @@ -1052,8 +1044,7 @@ glusterfs_handle_svc_attach(rpcsvc_request_t *req) ret = dict_unserialize(xlator_req.dict.dict_val, xlator_req.dict.dict_len, &dict); if (ret) { - gf_msg(this->name, GF_LOG_WARNING, EINVAL, glusterfsd_msg_42, - "failed to unserialize xdata to dictionary"); + gf_smsg(this->name, GF_LOG_WARNING, EINVAL, glusterfsd_msg_42, NULL); goto out; } dict->extra_stdfree = xlator_req.dict.dict_val; @@ -1105,8 +1096,8 @@ glusterfs_handle_svc_detach(rpcsvc_request_t *req) if (!volfile_tmp) { UNLOCK(&ctx->volfile_lock); - gf_msg(THIS->name, GF_LOG_ERROR, 0, glusterfsd_msg_41, - "can't detach %s - not found", xlator_req.name); + gf_smsg(THIS->name, GF_LOG_ERROR, 0, glusterfsd_msg_041, "name=%s", + xlator_req.name, NULL); /* * Used to be -ENOENT. However, the caller asked us to * make sure it's down and if it's already down that's @@ -1119,9 +1110,8 @@ glusterfs_handle_svc_detach(rpcsvc_request_t *req) ret = glusterfs_process_svc_detach(ctx, volfile_tmp); if (ret) { UNLOCK(&ctx->volfile_lock); - gf_msg("glusterfsd-mgmt", GF_LOG_ERROR, EINVAL, glusterfsd_msg_41, - "Could not detach " - "old graph. Aborting the reconfiguration operation"); + gf_smsg("glusterfsd-mgmt", GF_LOG_ERROR, EINVAL, glusterfsd_msg_042, + NULL); goto out; } } @@ -1178,10 +1168,8 @@ glusterfs_handle_dump_metrics(rpcsvc_request_t *req) goto out; if (statbuf.st_size > GF_UNIT_MB) { - gf_msg(this->name, GF_LOG_WARNING, ENOMEM, LG_MSG_NO_MEMORY, - "Allocated size exceeds expectation: " - "reconsider logic (%" PRId64 ")", - statbuf.st_size); + gf_smsg(this->name, GF_LOG_WARNING, ENOMEM, LG_MSG_NO_MEMORY, + "reconsider logic (%" PRId64 ")", statbuf.st_size, NULL); } msg = GF_CALLOC(1, (statbuf.st_size + 1), gf_common_mt_char); if (!msg) @@ -2226,8 +2214,8 @@ volfile: tmp_fd = mkstemp(template); if (-1 == tmp_fd) { UNLOCK(&ctx->volfile_lock); - gf_msg(frame->this->name, GF_LOG_ERROR, 0, glusterfsd_msg_39, - "Unable to create temporary file: %s", template); + gf_smsg(frame->this->name, GF_LOG_ERROR, 0, glusterfsd_msg_39, + "create template=%s", template, NULL); ret = -1; goto post_unlock; } @@ -2237,8 +2225,8 @@ volfile: */ ret = sys_unlink(template); if (ret < 0) { - gf_msg(frame->this->name, GF_LOG_INFO, 0, glusterfsd_msg_39, - "Unable to delete temporary file: %s", template); + gf_smsg(frame->this->name, GF_LOG_INFO, 0, glusterfsd_msg_39, + "delete template=%s", template, NULL); ret = 0; } diff --git a/glusterfsd/src/glusterfsd.c b/glusterfsd/src/glusterfsd.c index 460a48cd542..dae41f33fef 100644 --- a/glusterfsd/src/glusterfsd.c +++ b/glusterfsd/src/glusterfsd.c @@ -47,12 +47,6 @@ #include <malloc.h> #endif -#ifdef HAVE_MALLOC_STATS -#ifdef DEBUG -#include <mcheck.h> -#endif -#endif - #include <glusterfs/xlator.h> #include <glusterfs/glusterfs.h> #include <glusterfs/compat.h> @@ -301,8 +295,7 @@ glusterfs_listener_init(glusterfs_ctx_t *ctx); #define DICT_SET_VAL(method, dict, key, val, msgid) \ if (method(dict, key, val)) { \ - gf_smsg("glusterfsd", GF_LOG_ERROR, 0, msgid, \ - "Failed to set dict value for key %s", key); \ + gf_smsg("glusterfsd", GF_LOG_ERROR, 0, msgid, "key=%s", key); \ goto err; \ } @@ -327,14 +320,15 @@ set_fuse_mount_options(glusterfs_ctx_t *ctx, dict_t *options) cmd_args->mount_point); if (ret == -1) { gf_smsg("glusterfsd", GF_LOG_ERROR, errno, glusterfsd_msg_1, - "gf_asprintf failed"); + "gf_asprintf failed", NULL); goto err; } } else { gf_smsg("glusterfsd", GF_LOG_ERROR, errno, glusterfsd_msg_2, - "getcwd failed"); + "getcwd failed", NULL); goto err; } + } else { mount_point = gf_strdup(cmd_args->mount_point); } @@ -408,6 +402,7 @@ set_fuse_mount_options(glusterfs_ctx_t *ctx, dict_t *options) switch (cmd_args->fopen_keep_cache) { case GF_OPTION_ENABLE: + DICT_SET_VAL(dict_set_static_ptr, options, "fopen-keep-cache", "on", glusterfsd_msg_3); break; @@ -565,8 +560,7 @@ create_fuse_mount(glusterfs_ctx_t *ctx) } if (ctx->process_mode != GF_CLIENT_PROCESS) { - gf_msg("glusterfsd", GF_LOG_ERROR, 0, glusterfsd_msg_7, - "Not a client process, not performing mount operation"); + gf_smsg("glusterfsd", GF_LOG_ERROR, 0, glusterfsd_msg_7, NULL); return -1; } @@ -579,8 +573,8 @@ create_fuse_mount(glusterfs_ctx_t *ctx) goto err; if (xlator_set_type(master, "mount/fuse") == -1) { - gf_msg("glusterfsd", GF_LOG_ERROR, errno, glusterfsd_msg_8, - "MOUNT-POINT %s initialization failed", cmd_args->mount_point); + gf_smsg("glusterfsd", GF_LOG_ERROR, errno, glusterfsd_msg_8, + "MOUNT-POINT=%s", cmd_args->mount_point, NULL); goto err; } @@ -597,8 +591,8 @@ create_fuse_mount(glusterfs_ctx_t *ctx) ret = dict_set_static_ptr(master->options, ZR_FUSE_MOUNTOPTS, cmd_args->fuse_mountopts); if (ret < 0) { - gf_msg("glusterfsd", GF_LOG_ERROR, 0, glusterfsd_msg_4, - "failed to set dict value for key " ZR_FUSE_MOUNTOPTS); + gf_smsg("glusterfsd", GF_LOG_ERROR, 0, glusterfsd_msg_3, + ZR_FUSE_MOUNTOPTS, NULL); goto err; } } @@ -630,8 +624,8 @@ get_volfp(glusterfs_ctx_t *ctx) cmd_args = &ctx->cmd_args; if ((specfp = fopen(cmd_args->volfile, "r")) == NULL) { - gf_msg("glusterfsd", GF_LOG_ERROR, errno, glusterfsd_msg_9, - "loading volume file %s failed", cmd_args->volfile); + gf_smsg("glusterfsd", GF_LOG_ERROR, errno, glusterfsd_msg_9, + "volume_file=%s", cmd_args->volfile, NULL); return NULL; } @@ -687,8 +681,7 @@ gf_remember_xlator_option(char *arg) dot = strchr(arg, '.'); if (!dot) { - gf_msg("", GF_LOG_WARNING, 0, glusterfsd_msg_10, - "xlator option %s is invalid", arg); + gf_smsg("", GF_LOG_WARNING, 0, glusterfsd_msg_10, "arg=%s", arg, NULL); goto out; } @@ -701,8 +694,7 @@ gf_remember_xlator_option(char *arg) equals = strchr(arg, '='); if (!equals) { - gf_msg("", GF_LOG_WARNING, 0, glusterfsd_msg_10, - "xlator option %s is invalid", arg); + gf_smsg("", GF_LOG_WARNING, 0, glusterfsd_msg_10, "arg=%s", arg, NULL); goto out; } @@ -714,8 +706,7 @@ gf_remember_xlator_option(char *arg) option->key[(equals - dot - 1)] = '\0'; if (!*(equals + 1)) { - gf_msg("", GF_LOG_WARNING, 0, glusterfsd_msg_10, - "xlator option %s is invalid", arg); + gf_smsg("", GF_LOG_WARNING, 0, glusterfsd_msg_10, "arg=%s", arg, NULL); goto out; } @@ -1521,8 +1512,7 @@ reincarnate(int signum) gf_msg_trace("gluster", 0, "received reincarnate request (sig:HUP)"); if (cmd_args->volfile_server) { - gf_msg("glusterfsd", GF_LOG_INFO, 0, glusterfsd_msg_11, - "Fetching the volume file from server..."); + gf_smsg("glusterfsd", GF_LOG_INFO, 0, glusterfsd_msg_11, NULL); ret = glusterfs_volfile_fetch(ctx); } @@ -1530,8 +1520,7 @@ reincarnate(int signum) gf_log_logrotate(1); if (ret < 0) - gf_msg("glusterfsd", GF_LOG_ERROR, 0, glusterfsd_msg_12, - "volume initialization failed."); + gf_smsg("glusterfsd", GF_LOG_ERROR, 0, glusterfsd_msg_12, NULL); return; } @@ -1583,8 +1572,7 @@ glusterfs_ctx_defaults_init(glusterfs_ctx_t *ctx) ret = xlator_mem_acct_init(THIS, gfd_mt_end); if (ret != 0) { - gf_msg(THIS->name, GF_LOG_CRITICAL, 0, glusterfsd_msg_34, - "memory accounting init failed."); + gf_smsg(THIS->name, GF_LOG_CRITICAL, 0, glusterfsd_msg_34, NULL); return ret; } @@ -1598,8 +1586,7 @@ glusterfs_ctx_defaults_init(glusterfs_ctx_t *ctx) ctx->process_uuid = generate_glusterfs_ctx_id(); if (!ctx->process_uuid) { - gf_msg("", GF_LOG_CRITICAL, 0, glusterfsd_msg_13, - "ERROR: glusterfs uuid generation failed"); + gf_smsg("", GF_LOG_CRITICAL, 0, glusterfsd_msg_13, NULL); goto out; } @@ -1607,23 +1594,20 @@ glusterfs_ctx_defaults_init(glusterfs_ctx_t *ctx) ctx->iobuf_pool = iobuf_pool_new(); if (!ctx->iobuf_pool) { - gf_msg("", GF_LOG_CRITICAL, 0, glusterfsd_msg_14, - "ERROR: glusterfs iobuf pool creation failed"); + gf_smsg("", GF_LOG_CRITICAL, 0, glusterfsd_msg_14, "iobuf", NULL); goto out; } ctx->event_pool = gf_event_pool_new(DEFAULT_EVENT_POOL_SIZE, STARTING_EVENT_THREADS); if (!ctx->event_pool) { - gf_msg("", GF_LOG_CRITICAL, 0, glusterfsd_msg_14, - "ERROR: glusterfs event pool creation failed"); + gf_smsg("", GF_LOG_CRITICAL, 0, glusterfsd_msg_14, "event", NULL); goto out; } ctx->pool = GF_CALLOC(1, sizeof(call_pool_t), gfd_mt_call_pool_t); if (!ctx->pool) { - gf_msg("", GF_LOG_CRITICAL, 0, glusterfsd_msg_14, - "ERROR: glusterfs call pool creation failed"); + gf_smsg("", GF_LOG_CRITICAL, 0, glusterfsd_msg_14, "call", NULL); goto out; } @@ -1633,22 +1617,19 @@ glusterfs_ctx_defaults_init(glusterfs_ctx_t *ctx) /* frame_mem_pool size 112 * 4k */ ctx->pool->frame_mem_pool = mem_pool_new(call_frame_t, 4096); if (!ctx->pool->frame_mem_pool) { - gf_msg("", GF_LOG_CRITICAL, 0, glusterfsd_msg_14, - "ERROR: glusterfs frame pool creation failed"); + gf_smsg("", GF_LOG_CRITICAL, 0, glusterfsd_msg_14, "frame", NULL); goto out; } /* stack_mem_pool size 256 * 1024 */ ctx->pool->stack_mem_pool = mem_pool_new(call_stack_t, 1024); if (!ctx->pool->stack_mem_pool) { - gf_msg("", GF_LOG_CRITICAL, 0, glusterfsd_msg_14, - "ERROR: glusterfs stack pool creation failed"); + gf_smsg("", GF_LOG_CRITICAL, 0, glusterfsd_msg_14, "stack", NULL); goto out; } ctx->stub_mem_pool = mem_pool_new(call_stub_t, 1024); if (!ctx->stub_mem_pool) { - gf_msg("", GF_LOG_CRITICAL, 0, glusterfsd_msg_14, - "ERROR: glusterfs stub pool creation failed"); + gf_smsg("", GF_LOG_CRITICAL, 0, glusterfsd_msg_14, "stub", NULL); goto out; } @@ -1706,6 +1687,10 @@ glusterfs_ctx_defaults_init(glusterfs_ctx_t *ctx) INIT_LIST_HEAD(&cmd_args->xlator_options); INIT_LIST_HEAD(&cmd_args->volfile_servers); + ctx->pxl_count = 0; + pthread_mutex_init(&ctx->fd_lock, NULL); + pthread_cond_init(&ctx->fd_cond, NULL); + INIT_LIST_HEAD(&ctx->janitor_fds); lim.rlim_cur = RLIM_INFINITY; lim.rlim_max = RLIM_INFINITY; @@ -1994,7 +1979,7 @@ parse_cmdline(int argc, char *argv[], glusterfs_ctx_t *ctx) struct stat stbuf = { 0, }; - char timestr[32]; + char timestr[GF_TIMESTR_SIZE]; char tmp_logfile[1024] = {0}; char *tmp_logfile_dyn = NULL; char *tmp_logfilebase = NULL; @@ -2056,9 +2041,7 @@ parse_cmdline(int argc, char *argv[], glusterfs_ctx_t *ctx) /* Make sure after the parsing cli, if '--volfile-server' option is given, then '--volfile-id' is mandatory */ if (cmd_args->volfile_server && !cmd_args->volfile_id) { - gf_msg("glusterfs", GF_LOG_CRITICAL, 0, glusterfsd_msg_15, - "ERROR: '--volfile-id' is mandatory if '-s' OR " - "'--volfile-server' option is given"); + gf_smsg("glusterfs", GF_LOG_CRITICAL, 0, glusterfsd_msg_15, NULL); ret = -1; goto out; } @@ -2075,8 +2058,8 @@ parse_cmdline(int argc, char *argv[], glusterfs_ctx_t *ctx) and exit */ ret = sys_stat(cmd_args->volfile, &stbuf); if (ret) { - gf_msg("glusterfs", GF_LOG_CRITICAL, errno, glusterfsd_msg_16, - "ERROR: parsing the volfile failed"); + gf_smsg("glusterfs", GF_LOG_CRITICAL, errno, glusterfsd_msg_16, + NULL); /* argp_usage (argp.) */ fprintf(stderr, "USAGE: %s [options] [mountpoint]\n", argv[0]); goto out; @@ -2100,8 +2083,8 @@ parse_cmdline(int argc, char *argv[], glusterfs_ctx_t *ctx) if (((ret == 0) && (S_ISREG(stbuf.st_mode) || S_ISLNK(stbuf.st_mode))) || (ret == -1)) { - /* Have separate logfile per run */ - gf_time_fmt(timestr, sizeof timestr, time(NULL), gf_timefmt_FT); + /* Have separate logfile per run. */ + gf_time_fmt(timestr, sizeof timestr, gf_time(), gf_timefmt_FT); sprintf(tmp_logfile, "%s.%s.%d", cmd_args->log_file, timestr, getpid()); @@ -2128,9 +2111,7 @@ parse_cmdline(int argc, char *argv[], glusterfs_ctx_t *ctx) compatibility with third party applications */ if (cmd_args->max_connect_attempts) { - gf_msg("glusterfs", GF_LOG_WARNING, 0, glusterfsd_msg_33, - "obsolete option '--volfile-max-fecth-attempts or " - "fetch-attempts' was provided"); + gf_smsg("glusterfs", GF_LOG_WARNING, 0, glusterfsd_msg_33, NULL); } #ifdef GF_DARWIN_HOST_OS @@ -2157,8 +2138,8 @@ glusterfs_pidfile_setup(glusterfs_ctx_t *ctx) pidfp = fopen(cmd_args->pid_file, "a+"); if (!pidfp) { - gf_msg("glusterfsd", GF_LOG_ERROR, errno, glusterfsd_msg_17, - "pidfile %s open failed", cmd_args->pid_file); + gf_smsg("glusterfsd", GF_LOG_ERROR, errno, glusterfsd_msg_17, + "pidfile=%s", cmd_args->pid_file, NULL); goto out; } @@ -2209,29 +2190,29 @@ glusterfs_pidfile_update(glusterfs_ctx_t *ctx, pid_t pid) ret = lockf(fileno(pidfp), F_TLOCK, 0); if (ret) { - gf_msg("glusterfsd", GF_LOG_ERROR, errno, glusterfsd_msg_18, - "pidfile %s lock failed", cmd_args->pid_file); + gf_smsg("glusterfsd", GF_LOG_ERROR, errno, glusterfsd_msg_18, + "pidfile=%s", cmd_args->pid_file, NULL); return ret; } ret = sys_ftruncate(fileno(pidfp), 0); if (ret) { - gf_msg("glusterfsd", GF_LOG_ERROR, errno, glusterfsd_msg_20, - "pidfile %s truncation failed", cmd_args->pid_file); + gf_smsg("glusterfsd", GF_LOG_ERROR, errno, glusterfsd_msg_20, + "pidfile=%s", cmd_args->pid_file, NULL); return ret; } ret = fprintf(pidfp, "%d\n", pid); if (ret <= 0) { - gf_msg("glusterfsd", GF_LOG_ERROR, errno, glusterfsd_msg_21, - "pidfile %s write failed", cmd_args->pid_file); + gf_smsg("glusterfsd", GF_LOG_ERROR, errno, glusterfsd_msg_21, + "pidfile=%s", cmd_args->pid_file, NULL); return ret; } ret = fflush(pidfp); if (ret) { - gf_msg("glusterfsd", GF_LOG_ERROR, errno, glusterfsd_msg_21, - "pidfile %s write failed", cmd_args->pid_file); + gf_smsg("glusterfsd", GF_LOG_ERROR, errno, glusterfsd_msg_21, + "pidfile=%s", cmd_args->pid_file, NULL); return ret; } @@ -2324,8 +2305,7 @@ glusterfs_signals_setup(glusterfs_ctx_t *ctx) ret = pthread_sigmask(SIG_BLOCK, &set, NULL); if (ret) { - gf_msg("glusterfsd", GF_LOG_WARNING, errno, glusterfsd_msg_22, - "failed to execute pthread_sigmask"); + gf_smsg("glusterfsd", GF_LOG_WARNING, errno, glusterfsd_msg_22, NULL); return ret; } @@ -2337,8 +2317,7 @@ glusterfs_signals_setup(glusterfs_ctx_t *ctx) fallback to signals getting handled by other threads. setup the signal handlers */ - gf_msg("glusterfsd", GF_LOG_WARNING, errno, glusterfsd_msg_23, - "failed to create pthread"); + gf_smsg("glusterfsd", GF_LOG_WARNING, errno, glusterfsd_msg_23, NULL); return ret; } @@ -2384,8 +2363,7 @@ daemonize(glusterfs_ctx_t *ctx) sys_close(ctx->daemon_pipe[1]); } - gf_msg("daemonize", GF_LOG_ERROR, errno, glusterfsd_msg_24, - "daemonization failed"); + gf_smsg("daemonize", GF_LOG_ERROR, errno, glusterfsd_msg_24, NULL); goto out; case 0: /* child */ @@ -2406,8 +2384,8 @@ daemonize(glusterfs_ctx_t *ctx) } else { err = cstatus; } - gf_msg("daemonize", GF_LOG_ERROR, 0, glusterfsd_msg_25, - "mount failed"); + gf_smsg("daemonize", GF_LOG_ERROR, 0, glusterfsd_msg_25, + NULL); exit(err); } } @@ -2498,16 +2476,13 @@ glusterfs_process_volfp(glusterfs_ctx_t *ctx, FILE *fp) graph = glusterfs_graph_construct(fp); if (!graph) { - gf_msg("", GF_LOG_ERROR, 0, glusterfsd_msg_26, - "failed to construct the graph"); + gf_smsg("", GF_LOG_ERROR, 0, glusterfsd_msg_26, NULL); goto out; } for (trav = graph->first; trav; trav = trav->next) { if (strcmp(trav->type, "mount/fuse") == 0) { - gf_msg("glusterfsd", GF_LOG_ERROR, 0, glusterfsd_msg_27, - "fuse xlator cannot be specified in volume " - "file"); + gf_smsg("glusterfsd", GF_LOG_ERROR, 0, glusterfsd_msg_27, NULL); goto out; } } @@ -2588,8 +2563,7 @@ glusterfs_volumes_init(glusterfs_ctx_t *ctx) fp = get_volfp(ctx); if (!fp) { - gf_msg("glusterfsd", GF_LOG_ERROR, 0, glusterfsd_msg_28, - "Cannot reach volume specification file"); + gf_smsg("glusterfsd", GF_LOG_ERROR, 0, glusterfsd_msg_28, NULL); ret = -1; goto out; } @@ -2620,8 +2594,7 @@ main(int argc, char *argv[]) ctx = glusterfs_ctx_new(); if (!ctx) { - gf_msg("glusterfs", GF_LOG_CRITICAL, 0, glusterfsd_msg_29, - "ERROR: glusterfs context not initialized"); + gf_smsg("glusterfs", GF_LOG_CRITICAL, 0, glusterfsd_msg_29, NULL); return ENOMEM; } glusterfsd_ctx = ctx; @@ -2685,9 +2658,7 @@ main(int argc, char *argv[]) /* set brick_mux mode only for server process */ if ((ctx->process_mode != GF_SERVER_PROCESS) && cmd->brick_mux) { - gf_msg("glusterfs", GF_LOG_CRITICAL, 0, glusterfsd_msg_43, - "command line argument --brick-mux is valid only for brick " - "process"); + gf_smsg("glusterfs", GF_LOG_CRITICAL, 0, glusterfsd_msg_43, NULL); goto out; } @@ -2702,15 +2673,14 @@ main(int argc, char *argv[]) len = snprintf(cmdlinestr + pos, sizeof(cmdlinestr) - pos, " %s", argv[i]); if ((len <= 0) || (len >= (sizeof(cmdlinestr) - pos))) { - gf_msg("glusterfs", GF_LOG_ERROR, 0, glusterfsd_msg_29, - "failed to create command line string"); + gf_smsg("glusterfs", GF_LOG_ERROR, 0, glusterfsd_msg_029, NULL); ret = -1; goto out; } } - gf_msg(argv[0], GF_LOG_INFO, 0, glusterfsd_msg_30, - "Started running %s version %s (args: %s)", argv[0], - PACKAGE_VERSION, cmdlinestr); + gf_smsg(argv[0], GF_LOG_INFO, 0, glusterfsd_msg_30, "arg=%s", argv[0], + "version=%s", PACKAGE_VERSION, "cmdlinestr=%s", cmdlinestr, + NULL); ctx->cmdlinestr = gf_strdup(cmdlinestr); } @@ -2745,8 +2715,7 @@ main(int argc, char *argv[]) ctx->env = syncenv_new(0, 0, 0); if (!ctx->env) { - gf_msg("", GF_LOG_ERROR, 0, glusterfsd_msg_31, - "Could not create new sync-environment"); + gf_smsg("", GF_LOG_ERROR, 0, glusterfsd_msg_31, NULL); goto out; } |