diff options
| -rw-r--r-- | api/src/glfs.c | 4 | ||||
| -rw-r--r-- | libglusterfs/src/logging.c | 35 | ||||
| -rw-r--r-- | libglusterfs/src/logging.h | 2 | 
3 files changed, 38 insertions, 3 deletions
diff --git a/api/src/glfs.c b/api/src/glfs.c index 29ed47c0c61..1bae78d2378 100644 --- a/api/src/glfs.c +++ b/api/src/glfs.c @@ -666,8 +666,8 @@ glfs_fini (struct glfs *fs)          glfs_subvol_done (fs, subvol); -        if (ctx->log.logfile) -                fclose (ctx->log.logfile); +        if (gf_log_fini(ctx) != 0) +                ret = -1;          return ret;  } diff --git a/libglusterfs/src/logging.c b/libglusterfs/src/logging.c index e3a4a9fde09..0058233a7cf 100644 --- a/libglusterfs/src/logging.c +++ b/libglusterfs/src/logging.c @@ -108,11 +108,44 @@ gf_log_set_xl_loglevel (void *this, gf_loglevel_t level)  }  void -gf_log_fini (void) +gf_log_globals_fini (void)  {          pthread_mutex_destroy (&THIS->ctx->log.logfile_mutex);  } +/** gf_log_fini - function to perform the cleanup of the log information + * @data - glusterfs context + * @return: success: 0 + *          failure: -1 + */ +int +gf_log_fini (void *data) +{ +        glusterfs_ctx_t *ctx = data; +        int ret = 0; + +        if (ctx == NULL) { +	        ret = -1; +                goto out; +        } + +        pthread_mutex_lock (&ctx->log.logfile_mutex); +        { +                if (ctx->log.logfile) { +                        if (fclose (ctx->log.logfile) != 0) +                                ret = -1; +                        /* Logfile needs to be set to NULL, so that any +                           call to gf_log after calling gf_log_fini, will +                           log the message to stderr. +                        */ +                        ctx->log.logfile = NULL; +                } +        } +        pthread_mutex_unlock (&ctx->log.logfile_mutex); + + out: +        return ret; +}  #ifdef GF_USE_SYSLOG  /** diff --git a/libglusterfs/src/logging.h b/libglusterfs/src/logging.h index cc806a76712..e2b7e664d0f 100644 --- a/libglusterfs/src/logging.h +++ b/libglusterfs/src/logging.h @@ -153,6 +153,8 @@ int gf_cmd_log_init (const char *filename);  void set_sys_log_level (gf_loglevel_t level); +int gf_log_fini(void *data); +  #define GF_DEBUG(xl, format, args...)                           \          gf_log ((xl)->name, GF_LOG_DEBUG, format, ##args)  #define GF_INFO(xl, format, args...)                            \  | 
