From b6e662539f58881fd08a0529a78d01560c6ef01f Mon Sep 17 00:00:00 2001 From: Milind Changire Date: Wed, 3 Oct 2018 07:43:54 -0400 Subject: [PATCH] autobuild v3.12.2-21 Resolves: bz#1623749 bz#1630997 Signed-off-by: Milind Changire --- ...sure-that-brickinfo-uuid-is-not-null.patch | 86 +++++++++++++++++++ ...rep-Fix-config-set-of-monitor-status.patch | 41 +++++++++ glusterfs.spec | 7 +- 3 files changed, 133 insertions(+), 1 deletion(-) create mode 100644 0386-glusterd-make-sure-that-brickinfo-uuid-is-not-null.patch create mode 100644 0387-georep-Fix-config-set-of-monitor-status.patch diff --git a/0386-glusterd-make-sure-that-brickinfo-uuid-is-not-null.patch b/0386-glusterd-make-sure-that-brickinfo-uuid-is-not-null.patch new file mode 100644 index 0000000..9fdfad2 --- /dev/null +++ b/0386-glusterd-make-sure-that-brickinfo-uuid-is-not-null.patch @@ -0,0 +1,86 @@ +From cb4bf2bb3721e66c28a01be6ffff54a6f8610f0e Mon Sep 17 00:00:00 2001 +From: Sanju Rakonde +Date: Tue, 25 Sep 2018 23:36:48 +0530 +Subject: [PATCH 386/387] glusterd: make sure that brickinfo->uuid is not null + +Problem: After an upgrade from the version where shared-brick-count +option is not present to a version which introduced this option +causes issue at the mount point i.e, size of the volume at mount +point will be reduced by shared-brick-count value times. + +Cause: shared-brick-count is equal to the number of bricks that +are sharing the file system. gd_set_shared_brick_count() calculates +the shared-brick-count value based on uuid of the node and fsid of +the brick. https://review.gluster.org/#/c/glusterfs/+/19484 handles +setting of fsid properly during an upgrade path. This patch assumed +that when the code path is reached, brickinfo->uuid is non-null. +But brickinfo->uuid is null for all the bricks, as the uuid is null +https://review.gluster.org/#/c/glusterfs/+/19484 couldn't reached the +code path to set the fsid for bricks. So, we had fsid as 0 for all +bricks, which resulted in gd_set_shared_brick_count() to calculate +shared-brick-count in a wrong way. i.e, the logic written in +gd_set_shared_brick_count() didn't work as expected since fsid is 0. + +Solution: Before control reaches the code path written by +https://review.gluster.org/#/c/glusterfs/+/19484, +adding a check for whether brickinfo->uuid is null and +if brickinfo->uuid is having null value, calling +glusterd_resolve_brick will set the brickinfo->uuid to a +proper value. When we have proper uuid, fsid for the bricks +will be set properly and shared-brick-count value will be +caluculated correctly. + +Please take a look at the bug https://bugzilla.redhat.com/show_bug.cgi?id=1632889 +for complete RCA + +Steps followed to test the fix: +1. Created a 2 node cluster, the cluster is running with binary +which doesn't have shared-brick-count option +2. Created a 2x(2+1) volume and started it +3. Mouted the volume, checked size of volume using df +4. Upgrade to a version where shared-brick-count is introduced +(upgraded the nodes one by one i.e, stop the glusterd, upgrade the node +and start the glusterd). +5. after upgrading both the nodes, bumped up the cluster.op-version +6. At mount point, df shows the correct size for volume. + +updtream patch: https://review.gluster.org/#/c/glusterfs/+/21278/ + +> fixes: bz#1632889 +> Change-Id: Ib9f078aafb15e899a01086eae113270657ea916b +> Signed-off-by: Sanju Rakonde + +Change-Id: Ib9f078aafb15e899a01086eae113270657ea916b +BUG: 1630997 +Signed-off-by: Sanju Rakonde +Reviewed-on: https://code.engineering.redhat.com/gerrit/151321 +Tested-by: RHGS Build Bot +Reviewed-by: Atin Mukherjee +--- + xlators/mgmt/glusterd/src/glusterd-store.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/xlators/mgmt/glusterd/src/glusterd-store.c b/xlators/mgmt/glusterd/src/glusterd-store.c +index 387e7e5..015f6c2 100644 +--- a/xlators/mgmt/glusterd/src/glusterd-store.c ++++ b/xlators/mgmt/glusterd/src/glusterd-store.c +@@ -2609,6 +2609,8 @@ glusterd_store_retrieve_bricks (glusterd_volinfo_t *volinfo) + * snapshot or snapshot restored volume this would be done post + * creating the brick mounts + */ ++ if (gf_uuid_is_null(brickinfo->uuid)) ++ (void)glusterd_resolve_brick(brickinfo); + if (brickinfo->real_path[0] == '\0' && !volinfo->is_snap_volume + && gf_uuid_is_null (volinfo->restored_from_snap)) { + /* By now if the brick is a local brick then it will be +@@ -2617,7 +2619,6 @@ glusterd_store_retrieve_bricks (glusterd_volinfo_t *volinfo) + * with MY_UUID for realpath check. Hence do not handle + * error + */ +- (void)glusterd_resolve_brick (brickinfo); + if (!gf_uuid_compare(brickinfo->uuid, MY_UUID)) { + if (!realpath (brickinfo->path, abspath)) { + gf_msg (this->name, GF_LOG_CRITICAL, +-- +1.8.3.1 + diff --git a/0387-georep-Fix-config-set-of-monitor-status.patch b/0387-georep-Fix-config-set-of-monitor-status.patch new file mode 100644 index 0000000..7db1bd7 --- /dev/null +++ b/0387-georep-Fix-config-set-of-monitor-status.patch @@ -0,0 +1,41 @@ +From 8e7eb94645355024a12417aa247fa3eecc586274 Mon Sep 17 00:00:00 2001 +From: Kotresh HR +Date: Mon, 1 Oct 2018 04:37:47 -0400 +Subject: [PATCH 387/387] georep: Fix config set of monitor status + +The backport of [1] introduced config set of monitor +status using new config framework available in +upstream but is not available in downstream. Hence +introduced the issue in downstreamwhere monitor +failed to start workers. Fixed the same and marking +in downstream only. + +[1] https://code.engineering.redhat.com/149760 + + +BUG: 1623749 +Change-Id: Ia80b66137d0a3b193d178859a5d3c5fca01aa623 +Signed-off-by: Kotresh HR +Reviewed-on: https://code.engineering.redhat.com/gerrit/151428 +Tested-by: RHGS Build Bot +Reviewed-by: Sunil Kumar Heggodu Gopala Acharya +--- + geo-replication/syncdaemon/monitor.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/geo-replication/syncdaemon/monitor.py b/geo-replication/syncdaemon/monitor.py +index 3451fe4..1b03d7d 100644 +--- a/geo-replication/syncdaemon/monitor.py ++++ b/geo-replication/syncdaemon/monitor.py +@@ -384,7 +384,7 @@ class Monitor(object): + # It will also cause fd leaks. + + self.lock.acquire() +- set_monitor_status(gconf.get("state-file"), self.ST_STARTED) ++ set_monitor_status(gconf.state_file, self.ST_STARTED) + self.lock.release() + for t in ta: + t.join() +-- +1.8.3.1 + diff --git a/glusterfs.spec b/glusterfs.spec index 27ffae5..ca60b6a 100644 --- a/glusterfs.spec +++ b/glusterfs.spec @@ -192,7 +192,7 @@ Release: 0.1%{?prereltag:.%{prereltag}}%{?dist} %else Name: glusterfs Version: 3.12.2 -Release: 20%{?dist} +Release: 21%{?dist} %endif License: GPLv2 or LGPLv3+ Group: System Environment/Base @@ -650,6 +650,8 @@ Patch0382: 0382-mount-fuse-make-fuse-dumping-available-as-mount-opti.patch Patch0383: 0383-glusterd-bump-up-GD_OP_VERSION_MAX.patch Patch0384: 0384-features-uss-Use-xxh64-to-generate-gfid-instead-of-m.patch Patch0385: 0385-afr-fix-incorrect-reporting-of-directory-split-brain.patch +Patch0386: 0386-glusterd-make-sure-that-brickinfo-uuid-is-not-null.patch +Patch0387: 0387-georep-Fix-config-set-of-monitor-status.patch %description GlusterFS is a distributed file-system capable of scaling to several @@ -2598,6 +2600,9 @@ fi %endif %changelog +* Wed Oct 03 2018 Milind Changire - 3.12.2-21 +- fixes bugs bz#1623749 bz#1630997 + * Sat Sep 22 2018 Sunil Kumar Acharya - 3.12.2-20 - Build respin with appropriate target version.