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
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>
This commit is contained in:
Sanoj Unnikrishnan 2017-01-18 15:56:00 +05:30 committed by Atin Mukherjee
parent 6f4811ca93
commit 89cf743118

View File

@ -1069,6 +1069,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;
@ -1078,6 +1083,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
@ -1100,12 +1108,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;
}
@ -1234,7 +1237,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);