Blob Blame History Raw
From 005578793abb9a37a81591e107b442acfc2f3ea4 Mon Sep 17 00:00:00 2001
From: Samikshan Bairagya <samikshan@gmail.com>
Date: Mon, 10 Apr 2017 18:46:42 +0530
Subject: [PATCH 613/616] glusterd: Add brick capacity details to get-state CLI
 output

>Reviewed-on: https://review.gluster.org/17029
>Smoke: Gluster Build System <jenkins@build.gluster.org>
>NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
>CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
>Reviewed-by: Atin Mukherjee <amukherj@redhat.com>

Change-Id: I53fe180e71d41d56b129254b93bb74014a2cdb43
BUG: 1488018
Signed-off-by: Samikshan Bairagya <samikshan@gmail.com>
Reviewed-on: https://code.engineering.redhat.com/gerrit/117174
Tested-by: Atin Mukherjee <amukherj@redhat.com>
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
---
 xlators/mgmt/glusterd/src/glusterd-handler.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c
index 8a781f8..7e24c9b 100644
--- a/xlators/mgmt/glusterd/src/glusterd-handler.c
+++ b/xlators/mgmt/glusterd/src/glusterd-handler.c
@@ -5270,6 +5270,7 @@ glusterd_get_state (rpcsvc_request_t *req, dict_t *dict)
         glusterd_brickinfo_t        *brickinfo = NULL;
         glusterd_snap_t             *snapinfo = NULL;
         xlator_t                    *this = NULL;
+        struct statvfs               brickstat = {0};
         char                        *odir = NULL;
         char                        *filename = NULL;
         char                        *ofilepath = NULL;
@@ -5280,6 +5281,8 @@ glusterd_get_state (rpcsvc_request_t *req, dict_t *dict)
         char                         timestamp[16] = {0,};
         int                          start_index = 0;
         uint32_t                     get_state_cmd = 0;
+        uint64_t                     memtotal = 0;
+        uint64_t                     memfree = 0;
 
         char    *vol_type_str = NULL;
         char    *hot_tier_type_str = NULL;
@@ -5522,6 +5525,22 @@ glusterd_get_state (rpcsvc_request_t *req, dict_t *dict)
                                       "Hot" : "Cold");
                         }
 
+                        ret = sys_statvfs (brickinfo->path, &brickstat);
+                        if (ret) {
+                                gf_msg (this->name, GF_LOG_ERROR, errno,
+                                        GD_MSG_FILE_OP_FAILED,
+                                        "statfs error: %s ", strerror (errno));
+                                goto out;
+                        }
+
+                        memfree = brickstat.f_bfree * brickstat.f_bsize;
+                        memtotal = brickstat.f_blocks * brickstat.f_bsize;
+
+                        fprintf (fp, "Volume%d.Brick%d.spacefree: %"PRIu64"Bytes\n",
+                                 count_bkp, count, memfree);
+                        fprintf (fp, "Volume%d.Brick%d.spacetotal: %"PRIu64"Bytes\n",
+                                 count_bkp, count, memtotal);
+
                         if (get_state_cmd != GF_CLI_GET_STATE_DETAIL)
                                 continue;
 
-- 
1.8.3.1