From 6de89dc654727526c5daa2f88095ce71afbc8c80 Mon Sep 17 00:00:00 2001 From: Sanoj Unnikrishnan 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 > Reviewed-on: http://review.gluster.org/16425 > Reviewed-by: Atin Mukherjee Change-Id: I57f109717370fdbc02d331a4588fd2bf8edb8f7a BUG: 1412955 Signed-off-by: Sanoj Unnikrishnan Reviewed-on: https://code.engineering.redhat.com/gerrit/95825 Reviewed-by: Atin Mukherjee --- 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