glusterd: manage upgrade to current master

Scenarios tested:

* Upgrade the node when there are stripe / tiering and regular
type of volumes are present.
  - All volumes are started fine (as the change was not on brick volfile)
  - For tier, the functionality may not even work, as changetimerecorder
    is not present.
  - 'gluster volume info' properly shows as 'NOT SUPPORTED' for stripe and
    tier type of volume.

* Upgrade in a rolling upgrade scenario, where an old version is
able to connect to higher master.
  - on a normal volume, if the volfile-server was new, the newer client
    volfiles needed to have utime xlator conditionally.
  - with this one change, all other changes seem to work fine.

Change-Id: Ib2d3b69dafa02b2c695a735b13c1aa70aba07cb8
updates: bz#1635688
Signed-off-by: Amar Tumballi <amarts@redhat.com>
This commit is contained in:
Amar Tumballi 2018-12-17 14:16:21 +05:30 committed by Atin Mukherjee
parent da5ae3afcd
commit ec05f3a21f
6 changed files with 18 additions and 20 deletions

View File

@ -65,14 +65,14 @@
char *vol_type_str[] = {
"Distribute",
"Stripe",
"Stripe [NOT SUPPORTED from v6.0]",
"Replicate",
"Striped-Replicate",
"Striped-Replicate [NOT SUPPORTED from v6.0]",
"Disperse",
"Tier",
"Distributed-Stripe",
"Tier [NOT SUPPORTED from v6.0]",
"Distributed-Stripe [NOT SUPPORTED from v6.0]",
"Distributed-Replicate",
"Distributed-Striped-Replicate",
"Distributed-Striped-Replicate [NOT SUPPORTED from v6.0]",
"Distributed-Disperse",
};

View File

@ -43,7 +43,6 @@ push_trapfunc rm -rf $ODIR
TEST $CLI volume create $V0 disperse $H0:$B0/b1 $H0:$B0/b2 $H0:$B0/b3
TEST $CLI volume start $V0
TEST $CLI volume tier $V0 attach replica 2 $H0:$B1/b4 $H0:$B1/b5
TEST setup_lvm 1
TEST $CLI volume create $V1 $H0:$L1;

View File

@ -20,7 +20,6 @@ TEST $CLI snapshot create snap1 $V0 no-timestamp;
TEST $CLI volume stop $V0
TEST $CLI snapshot restore snap1;
TEST $CLI volume start $V0
TEST $CLI volume tier $V0 attach $H0:$L1 $H0:$L2
TEST pkill gluster
TEST glusterd

View File

@ -15,7 +15,6 @@ TEST setup_lvm 3
TEST $CLI volume create $V0 $H0:$L1
TEST $CLI volume start $V0
TEST $CLI volume quota $V0 enable
TEST $CLI volume tier $V0 attach replica 2 $H0:$L2 $H0:$L3
TEST $CLI snapshot create snap1 $V0 no-timestamp
TEST $CLI snapshot activate snap1

View File

@ -3331,14 +3331,13 @@ glusterd_store_update_volinfo(glusterd_volinfo_t *volinfo)
break;
case GF_CLUSTER_TYPE_TIER:
if (volinfo->tier_info.cold_type == GF_CLUSTER_TYPE_DISPERSE)
volinfo->tier_info
.cold_dist_leaf_count = volinfo->disperse_count;
else
volinfo->tier_info
.cold_dist_leaf_count = glusterd_calc_dist_leaf_count(
volinfo->tier_info.cold_replica_count, 1);
case GF_CLUSTER_TYPE_STRIPE:
case GF_CLUSTER_TYPE_STRIPE_REPLICATE:
gf_msg(this->name, GF_LOG_CRITICAL, ENOTSUP,
GD_MSG_VOLINFO_STORE_FAIL,
"The volume type is no more supported. Please refer to "
"glusterfs-6.0 release-notes for how to migrate from "
"this volume type");
break;
default:

View File

@ -4283,10 +4283,12 @@ client_graph_builder(volgen_graph_t *graph, glusterd_volinfo_t *volinfo,
}
}
xl = volgen_graph_add(graph, "features/utime", volname);
if (!xl) {
ret = -1;
goto out;
if (conf->op_version >= GD_OP_VERSION_5_0) {
xl = volgen_graph_add(graph, "features/utime", volname);
if (!xl) {
ret = -1;
goto out;
}
}
/* As of now snapshot volume is read-only. Read-only xlator is loaded