d2787b
From 2e6a5e504e66bc95208420e4882e453a53ac9ea2 Mon Sep 17 00:00:00 2001
d2787b
From: schaffung <ssivakum@redhat.com>
d2787b
Date: Mon, 2 Nov 2020 11:18:01 +0530
d2787b
Subject: [PATCH 485/511] cli-rpc: conditional init of global quota rpc (#1578)
d2787b
d2787b
Issue: It is seem that the initialization of rpc to
d2787b
connect with quotad is done in every glusterfs cli command,
d2787b
irrespective of whether the quota feature is enabled or disabled.
d2787b
This seems to be an overkill.
d2787b
d2787b
Code change: The file /var/run/quotad/quotad.pid is present
d2787b
signals that quotad is enabled. Hence we can put a conditional
d2787b
check for seeing when this file exists and if it doesn't we
d2787b
just skip over the initialization of the global quotad rpc.
d2787b
d2787b
This will go on to reduce the extra rpc calls and operations
d2787b
being performed in the kernel space.
d2787b
d2787b
>Fixes: #1577
d2787b
>Change-Id: Icb69d35330f76ce95626f59af75a12726eb620ff
d2787b
>Signed-off-by: srijan-sivakumar <ssivakumar@redhat.com>
d2787b
Upstream Patch : https://github.com/gluster/glusterfs/pull/1578
d2787b
d2787b
BUG: 1885966
d2787b
Change-Id: Icb69d35330f76ce95626f59af75a12726eb620ff
d2787b
Signed-off-by: Srijan Sivakumar <ssivakum@redhat.com>
d2787b
Reviewed-on: https://code.engineering.redhat.com/gerrit/220371
d2787b
Tested-by: RHGS Build Bot <nigelb@redhat.com>
d2787b
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
d2787b
---
d2787b
 cli/src/cli.c | 18 +++++++++++++-----
d2787b
 cli/src/cli.h |  3 +++
d2787b
 2 files changed, 16 insertions(+), 5 deletions(-)
d2787b
d2787b
diff --git a/cli/src/cli.c b/cli/src/cli.c
d2787b
index 99a16a0..a76c5a2 100644
d2787b
--- a/cli/src/cli.c
d2787b
+++ b/cli/src/cli.c
d2787b
@@ -64,8 +64,7 @@
d2787b
 extern int connected;
d2787b
 /* using argp for command line parsing */
d2787b
 
d2787b
-const char *argp_program_version =
d2787b
-    PACKAGE_NAME" "PACKAGE_VERSION;
d2787b
+const char *argp_program_version = PACKAGE_NAME " " PACKAGE_VERSION;
d2787b
 const char *argp_program_bug_address = "<" PACKAGE_BUGREPORT ">";
d2787b
 
d2787b
 struct rpc_clnt *global_quotad_rpc;
d2787b
@@ -840,9 +839,18 @@ main(int argc, char *argv[])
d2787b
     if (!global_rpc)
d2787b
         goto out;
d2787b
 
d2787b
-    global_quotad_rpc = cli_quotad_clnt_rpc_init();
d2787b
-    if (!global_quotad_rpc)
d2787b
-        goto out;
d2787b
+    /*
d2787b
+     * Now, one doesn't need to initialize global rpc
d2787b
+     * for quota unless and until quota is enabled.
d2787b
+     * So why not put a check to save all the rpc related
d2787b
+     * ops here.
d2787b
+     */
d2787b
+    ret = sys_access(QUOTAD_PID_PATH, F_OK);
d2787b
+    if (!ret) {
d2787b
+        global_quotad_rpc = cli_quotad_clnt_rpc_init();
d2787b
+        if (!global_quotad_rpc)
d2787b
+            goto out;
d2787b
+    }
d2787b
 
d2787b
     ret = cli_cmds_register(&state);
d2787b
     if (ret)
d2787b
diff --git a/cli/src/cli.h b/cli/src/cli.h
d2787b
index 37e4d9d..c30ae9c 100644
d2787b
--- a/cli/src/cli.h
d2787b
+++ b/cli/src/cli.h
d2787b
@@ -30,6 +30,9 @@
d2787b
 #define CLI_TAB_LENGTH 8
d2787b
 #define CLI_BRICK_STATUS_LINE_LEN 78
d2787b
 
d2787b
+// Quotad pid path.
d2787b
+#define QUOTAD_PID_PATH "/var/run/gluster/quotad/quotad.pid"
d2787b
+
d2787b
 /* Geo-rep command positional arguments' index  */
d2787b
 #define GEO_REP_CMD_INDEX 1
d2787b
 #define GEO_REP_CMD_CONFIG_INDEX 4
d2787b
-- 
d2787b
1.8.3.1
d2787b