Blob Blame History Raw
From 6de89dc654727526c5daa2f88095ce71afbc8c80 Mon Sep 17 00:00:00 2001
From: Sanoj Unnikrishnan <sunnikri@redhat.com>
Date: Thu, 19 Jan 2017 20:34:43 +0530
Subject: [PATCH 272/275] Fixes upgrade issue in quota.conf

When an op-version bump up is done the glusterd_store_quota_config
upgrades the quota conf file, although overwriting the same later
which leaves out all gfid entries. While this is warranted for
enable opcode, for upgrade we need to retain gfids. So for upgrade
opcode, we return once the upgrade is done.

> Change-Id: I2b38c6022d74b4a14dc07432651a51cc39ad5120
> BUG: 1414346
> Signed-off-by: Sanoj Unnikrishnan <sunnikri@redhat.com>
> Reviewed-on: http://review.gluster.org/16425
> Reviewed-by: Atin Mukherjee <amukherj@redhat.com>

Change-Id: I57f109717370fdbc02d331a4588fd2bf8edb8f7a
BUG: 1412955
Signed-off-by: Sanoj Unnikrishnan <sunnikri@redhat.com>
Reviewed-on: https://code.engineering.redhat.com/gerrit/95825
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
---
 xlators/mgmt/glusterd/src/glusterd-quota.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/xlators/mgmt/glusterd/src/glusterd-quota.c b/xlators/mgmt/glusterd/src/glusterd-quota.c
index 08fc74f..451eb86 100644
--- a/xlators/mgmt/glusterd/src/glusterd-quota.c
+++ b/xlators/mgmt/glusterd/src/glusterd-quota.c
@@ -1068,6 +1068,11 @@ glusterd_store_quota_config (glusterd_volinfo_t *volinfo, char *path,
                 if (ret)
                         goto out;
 
+                if (GF_QUOTA_OPTION_TYPE_UPGRADE == opcode) {
+                        /* Nothing more to be done here */
+                        goto out;
+                }
+
                 conf_fd = open (volinfo->quota_conf_shandle->path, O_RDONLY);
                 if (conf_fd == -1) {
                         ret = -1;
@@ -1077,6 +1082,9 @@ glusterd_store_quota_config (glusterd_volinfo_t *volinfo, char *path,
                 ret = quota_conf_skip_header (conf_fd);
                 if (ret)
                         goto out;
+        } else if (GF_QUOTA_OPTION_TYPE_UPGRADE == opcode) {
+                /* No change to be done in quota_conf*/
+                goto out;
         }
 
         /* If op-ver is gt 3.7, then quota.conf will be upgraded, and 17 bytes
@@ -1099,12 +1107,7 @@ glusterd_store_quota_config (glusterd_volinfo_t *volinfo, char *path,
 
         /* Just create empty quota.conf file if create */
         if (GF_QUOTA_OPTION_TYPE_ENABLE == opcode ||
-            GF_QUOTA_OPTION_TYPE_ENABLE_OBJECTS == opcode ||
-            GF_QUOTA_OPTION_TYPE_UPGRADE == opcode) {
-                /* Opcode will be GF_QUOTA_OPTION_TYPE_UPGRADE when there is
-                 * an upgrade from 3.6 to 3.7. Just upgrade the quota.conf
-                 * file even during an op-version bumpup and exit.
-                 */
+            GF_QUOTA_OPTION_TYPE_ENABLE_OBJECTS == opcode) {
                 modified = _gf_true;
                 goto out;
         }
@@ -1233,7 +1236,7 @@ out:
 
         if (ret && (fd > 0)) {
                 gf_store_unlink_tmppath (volinfo->quota_conf_shandle);
-        } else if (!ret) {
+        } else if (!ret && GF_QUOTA_OPTION_TYPE_UPGRADE != opcode) {
                 ret = gf_store_rename_tmppath (volinfo->quota_conf_shandle);
                 if (modified) {
                         ret = glusterd_compute_cksum (volinfo, _gf_true);
-- 
2.9.3