Blob Blame History Raw
From 1e1bda15377a133e9a91e6f99d13e02bf4469269 Mon Sep 17 00:00:00 2001
From: Amar Tumballi <amarts@redhat.com>
Date: Thu, 7 Feb 2019 13:57:21 +0530
Subject: [PATCH 518/529] logging: create parent dir if not available

As glusterfs logging uses different directory than /var/log
(ie, /var/log/glusterfs), there is a chance it may not be
present when starting glusterfs. Create parent dir if it
doesn't exist.

Upstream fix:
>> URL: https://review.gluster.org/21536

BUG: 1570958
Change-Id: I6efaffd1e7e8aee350afcf2ca354b27747ff5e50
Signed-off-by: Amar Tumballi <amarts@redhat.com>
Reviewed-on: https://code.engineering.redhat.com/gerrit/162470
Tested-by: RHGS Build Bot <nigelb@redhat.com>
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
---
 libglusterfs/src/logging.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/libglusterfs/src/logging.c b/libglusterfs/src/logging.c
index 0f238d0..631bc98 100644
--- a/libglusterfs/src/logging.c
+++ b/libglusterfs/src/logging.c
@@ -758,6 +758,26 @@ gf_log_init (void *data, const char *file, const char *ident)
 		goto out;
         }
 
+        /* Also create parent dir */
+        char *logdir = gf_strdup(file);
+        if (!logdir) {
+            return -1;
+        }
+        char *tmp_index = rindex(logdir, '/');
+        if (tmp_index) {
+            tmp_index[0] = '\0';
+        }
+        if (mkdir_p(logdir, 0755, _gf_true)) {
+            /* EEXIST is handled in mkdir_p() itself */
+            gf_msg("logging", GF_LOG_ERROR, 0, LG_MSG_STRDUP_ERROR,
+                   "failed to create metrics dir %s (%s)", logdir,
+                   strerror(errno));
+            GF_FREE(logdir);
+            return -1;
+        }
+        /* no need of this variable */
+        GF_FREE(logdir);
+
         ctx->log.filename = gf_strdup (file);
         if (!ctx->log.filename) {
                 fprintf (stderr, "ERROR: updating log-filename failed: %s\n",
-- 
1.8.3.1