summaryrefslogtreecommitdiffstats
path: root/xlators/cluster/nsr-recon
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/cluster/nsr-recon')
-rw-r--r--xlators/cluster/nsr-recon/src/recon_driver.c37
-rw-r--r--xlators/cluster/nsr-recon/src/recon_driver.h15
-rw-r--r--xlators/cluster/nsr-recon/src/recon_xlator.c24
-rw-r--r--xlators/cluster/nsr-recon/src/recon_xlator.h7
4 files changed, 62 insertions, 21 deletions
diff --git a/xlators/cluster/nsr-recon/src/recon_driver.c b/xlators/cluster/nsr-recon/src/recon_driver.c
index 778f59413..163084958 100644
--- a/xlators/cluster/nsr-recon/src/recon_driver.c
+++ b/xlators/cluster/nsr-recon/src/recon_driver.c
@@ -98,7 +98,10 @@ recon_create_log (char *member, char *module)
(void)mkdir(dpath,0777);
(void)asprintf(&fpath,"%s/%s",dpath,module);
if (fpath) {
- fp = fopen(fpath,"w");
+ fp = fopen(fpath,"a");
+ if (setvbuf (fp, NULL, _IONBF, 0)) {
+ return NULL;
+ }
free(fpath);
}
free(dpath);
@@ -108,9 +111,9 @@ recon_create_log (char *member, char *module)
}
void
-_nsr_driver_log (const char *func, int line, char *member, char *fmt, ...)
+_nsr_driver_log (const char *func, int line, char *member, FILE *fp,
+ char *fmt, ...)
{
- static FILE *fp = NULL;
va_list ap;
char *buf = NULL;
int retval;
@@ -133,9 +136,9 @@ _nsr_driver_log (const char *func, int line, char *member, char *fmt, ...)
void
_nsr_worker_log (const char *func, int line, char *member,
- char *type, uint32_t index, char *fmt, ...)
+ char *type, uint32_t index, FILE *fp,
+ char *fmt, ...)
{
- static FILE *fp = NULL;
va_list ap;
char *buf = NULL;
int retval;
@@ -145,7 +148,7 @@ _nsr_worker_log (const char *func, int line, char *member,
if (asprintf(&name,"%s-%u",type,index) < 1) {
return;
}
- fp = recon_create_log(member,"recon-main-log");
+ fp = recon_create_log (member, name);
if (!fp) {
return;
}
@@ -2296,6 +2299,7 @@ nsr_reconciliation_driver(void *arg)
nsr_recon_driver_ctx_t **driver_ctx, *ctx;
int32_t bm;
xlator_t *this = priv->this;
+ char *con_name, *data_name;
driver_ctx = &priv->driver_thread_context;
(*driver_ctx) = GF_CALLOC (1,
@@ -2308,6 +2312,11 @@ nsr_reconciliation_driver(void *arg)
ctx = *driver_ctx;
ctx->this = priv->this;
ctx->replica_group_size = replica_group_size;
+
+ ctx->fp = recon_create_log (priv->replica_group_members[0], "nsr-driver-log");
+ if (!ctx->fp)
+ return NULL;
+
if ((pthread_mutex_init(&(ctx->mutex), NULL)) ||
(pthread_cond_init(&(ctx->cv), NULL))){
nsr_driver_log (this->name, GF_LOG_ERROR, "mutex init error \n");
@@ -2343,8 +2352,22 @@ nsr_reconciliation_driver(void *arg)
}
for (i=0; i < replica_group_size; i++) {
ctx->workers[i].control_worker = &control_s[i];
+ if (asprintf(&con_name,"recon-con-%u",i) < 1) {
+ return NULL;
+ }
+ ctx->workers[i].control_worker->fp = recon_create_log
+ (priv->replica_group_members[0], con_name);
+ if (!ctx->workers[i].control_worker->fp)
+ return NULL;
ctx->workers[i].data_worker = &data_s[i];
- }
+ if (asprintf (&data_name,"recon-data-%u",i) <1) {
+ return NULL;
+ }
+ ctx->workers[i].data_worker->fp = recon_create_log
+ (priv->replica_group_members[0], data_name);
+ if (!ctx->workers[i].data_worker->fp)
+ return NULL;
+ }
nsr_driver_log (this->name, GF_LOG_INFO, "creating threads \n");
// Create the worker threads
diff --git a/xlators/cluster/nsr-recon/src/recon_driver.h b/xlators/cluster/nsr-recon/src/recon_driver.h
index 096ca88b5..4030c9d73 100644
--- a/xlators/cluster/nsr-recon/src/recon_driver.h
+++ b/xlators/cluster/nsr-recon/src/recon_driver.h
@@ -233,6 +233,9 @@ typedef struct _nsr_per_node_worker_s {
pthread_mutex_t mutex; //mutex to guard the state
pthread_cond_t cv; //condition variable for signaling the worker thread
gf_boolean_t is_control;
+#if defined(NSR_DEBUG)
+ FILE *fp;
+#endif
} nsr_per_node_worker_t;
typedef struct _nsr_replica_worker_s {
@@ -257,6 +260,9 @@ typedef struct _nsr_recon_driver_ctxt {
uint32_t current_term;
jmp_buf *env;
nsr_mode_t mode; // default set to seq
+#if defined(NSR_DEBUG)
+ FILE *fp;
+#endif
} nsr_recon_driver_ctx_t;
void *
@@ -278,7 +284,8 @@ extern int nsr_debug_level;
extern FILE *recon_create_log (char *member, char *module);
extern void
-_nsr_driver_log (const char *func, int line, char *member, char *fmt, ...);
+_nsr_driver_log (const char *func, int line, char *member, FILE *fp,
+ char *fmt, ...);
#define nsr_driver_log(dom, levl, fmt...) do { \
FMT_WARN (fmt); \
@@ -286,13 +293,15 @@ _nsr_driver_log (const char *func, int line, char *member, char *fmt, ...);
nsr_recon_private_t *priv = ctx->this->private; \
_nsr_driver_log (__FUNCTION__, __LINE__, \
priv->replica_group_members[0], \
+ ctx->fp, \
##fmt); \
} \
} while (0)
extern void
_nsr_worker_log (const char *func, int line, char *member,
- char *type, uint32_t index, char *fmt, ...);
+ char *type, uint32_t index, FILE *fp,
+ char *fmt, ...);
#define nsr_worker_log(dom, levl, fmt...) do { \
FMT_WARN (fmt); \
@@ -303,7 +312,7 @@ _nsr_worker_log (const char *func, int line, char *member,
priv->replica_group_members[0], \
ctx->is_control ? "recon-con" : \
"recon-data", \
- ctx->index, \
+ ctx->index, ctx->fp, \
##fmt); \
} \
} while (0)
diff --git a/xlators/cluster/nsr-recon/src/recon_xlator.c b/xlators/cluster/nsr-recon/src/recon_xlator.c
index 0c140d8d6..c3c8d4d55 100644
--- a/xlators/cluster/nsr-recon/src/recon_xlator.c
+++ b/xlators/cluster/nsr-recon/src/recon_xlator.c
@@ -42,9 +42,9 @@ typedef struct _nsr_txn_id_s {
#if defined(NSR_DEBUG)
void
-_recon_main_log (const char *func, int line, char *member, char *fmt, ...)
+_recon_main_log (const char *func, int line, char *member, FILE *fp,
+ char *fmt, ...)
{
- static FILE *fp = NULL;
va_list ap;
char *buf = NULL;
int retval;
@@ -812,38 +812,38 @@ init (xlator_t *this)
priv = GF_CALLOC (1, sizeof (*priv), gf_mt_recon_private_t);
if (!priv) {
- recon_main_log (this->name, GF_LOG_ERROR,
+ gf_log (this->name, GF_LOG_ERROR,
"priv allocation error\n");
return -1;
}
GF_OPTION_INIT ("replica-group-size", priv->replica_group_size, uint32, err);
GF_OPTION_INIT ("vol-name", priv->volname, str, err);
if (!priv->volname) {
- recon_main_log (this->name, GF_LOG_ERROR,
+ gf_log (this->name, GF_LOG_ERROR,
"missing volname option (required)");
return -1;
}
GF_OPTION_INIT ("changelog-dir", priv->changelog_base_path, str, err);
if (!priv->changelog_base_path) {
- recon_main_log (this->name, GF_LOG_ERROR,
+ gf_log (this->name, GF_LOG_ERROR,
"missing changelog directory option (required)");
return -1;
}
GF_OPTION_INIT ("base-dir", priv->base_dir, str, err);
if (!priv->base_dir) {
- recon_main_log (this->name, GF_LOG_ERROR,
+ gf_log (this->name, GF_LOG_ERROR,
"missing brick base directory option (required)");
return -1;
}
GF_OPTION_INIT ("replica-group-members", members, str, err);
if (!members) {
- recon_main_log (this->name, GF_LOG_ERROR,
+ gf_log (this->name, GF_LOG_ERROR,
"missing membership option (required)");
return -1;
}
GF_OPTION_INIT ("local-member", local, str, err);
if (!local) {
- recon_main_log (this->name, GF_LOG_ERROR,
+ gf_log (this->name, GF_LOG_ERROR,
"missing local member option (required)");
return -1;
}
@@ -855,7 +855,7 @@ init (xlator_t *this)
strlen(local),
gf_mt_recon_private_t);
if (!priv->replica_group_members || !(priv->replica_group_members[0])) {
- recon_main_log (this->name, GF_LOG_ERROR,
+ gf_log (this->name, GF_LOG_ERROR,
"str allocation error\n");
return -1;
}
@@ -868,7 +868,7 @@ init (xlator_t *this)
member = strtok(NULL, ",");
priv->replica_group_members[i] = GF_CALLOC (1, strlen(member) + 1, gf_mt_recon_private_t);
if (!priv->replica_group_members[i]) {
- recon_main_log (this->name, GF_LOG_ERROR,
+ gf_log (this->name, GF_LOG_ERROR,
"str allocation error\n");
return -1;
}
@@ -879,6 +879,10 @@ init (xlator_t *this)
priv->this = this;
this->private = (void *)priv;
+ priv->fp = recon_create_log (priv->replica_group_members[0], "recon-main-log");
+ if (!priv->fp)
+ return -1;
+
recon_main_log (this->name, GF_LOG_INFO, "creating reconciliation driver \n");
if (pthread_create(&priv->thread_id, NULL, nsr_reconciliation_driver, priv)) {
diff --git a/xlators/cluster/nsr-recon/src/recon_xlator.h b/xlators/cluster/nsr-recon/src/recon_xlator.h
index a3c91a741..8c48f6ff6 100644
--- a/xlators/cluster/nsr-recon/src/recon_xlator.h
+++ b/xlators/cluster/nsr-recon/src/recon_xlator.h
@@ -40,6 +40,9 @@ typedef struct _nsr_recon_private_s {
uint32_t txn_id;
char *changelog_base_path;
char *base_dir;
+#if defined(NSR_DEBUG)
+ FILE *fp;
+#endif
} nsr_recon_private_t;
#define atomic_cmpxchg __sync_val_compare_and_swap
@@ -47,7 +50,8 @@ typedef struct _nsr_recon_private_s {
#if defined(NSR_DEBUG)
extern void
-_recon_main_log (const char *func, int line, char *member, char *fmt, ...);
+_recon_main_log (const char *func, int line, char *member, FILE *fp,
+ char *fmt, ...);
#define recon_main_log(dom, levl, fmt...) do { \
FMT_WARN (fmt); \
@@ -55,6 +59,7 @@ _recon_main_log (const char *func, int line, char *member, char *fmt, ...);
nsr_recon_private_t *priv = this->private; \
_recon_main_log (__FUNCTION__, __LINE__, \
priv->replica_group_members[0], \
+ priv->fp, \
##fmt); \
} \
} while (0)