14f8ab
From d7795a592883cfb01da76b6905a7c9eb1e912bef Mon Sep 17 00:00:00 2001
14f8ab
From: Mohit Agrawal <moagrawa@redhat.com>
14f8ab
Date: Tue, 28 May 2019 08:28:29 +0530
14f8ab
Subject: [PATCH 147/169] glusterd: bulkvoldict thread is not handling all
14f8ab
 volumes
14f8ab
14f8ab
Problem: In commit ac70f66c5805e10b3a1072bd467918730c0aeeb4 I
14f8ab
         missed one condition to populate volume dictionary in
14f8ab
         multiple threads while brick_multiplex is enabled.Due
14f8ab
         to that glusterd is not sending volume dictionary for
14f8ab
         all volumes to peer.
14f8ab
14f8ab
Solution: Update the condition in code as well as update test case
14f8ab
          also to avoid the issue
14f8ab
14f8ab
> Change-Id: I06522dbdfee4f7e995d9cc7b7098fdf35340dc52
14f8ab
> fixes: bz#1711250
14f8ab
> Cherry pick from commit 4a5fb52eb1c5387a0fb8bfa1253e5227c7c255e8
14f8ab
> Reviewed on upstream link https://review.gluster.org/#/c/glusterfs/+/22739/
14f8ab
14f8ab
BUG: 1711249
14f8ab
Change-Id: I06522dbdfee4f7e995d9cc7b7098fdf35340dc52
14f8ab
Signed-off-by: Mohit Agrawal <moagrawa@redhat.com>
14f8ab
Reviewed-on: https://code.engineering.redhat.com/gerrit/171589
14f8ab
Tested-by: RHGS Build Bot <nigelb@redhat.com>
14f8ab
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
14f8ab
---
14f8ab
 tests/bugs/glusterd/bug-1699339.t          | 16 ++++++++++------
14f8ab
 xlators/mgmt/glusterd/src/glusterd-utils.c |  2 +-
14f8ab
 2 files changed, 11 insertions(+), 7 deletions(-)
14f8ab
14f8ab
diff --git a/tests/bugs/glusterd/bug-1699339.t b/tests/bugs/glusterd/bug-1699339.t
14f8ab
index 3e950f4..bb8d4f4 100644
14f8ab
--- a/tests/bugs/glusterd/bug-1699339.t
14f8ab
+++ b/tests/bugs/glusterd/bug-1699339.t
14f8ab
@@ -52,18 +52,22 @@ done
14f8ab
 
14f8ab
 TEST kill_glusterd 1
14f8ab
 
14f8ab
-vol1=$(printf "%s-vol%02d" $V0 1)
14f8ab
+TESTS_EXPECTED_IN_LOOP=4
14f8ab
+for i in `seq 1 3 15`
14f8ab
+do
14f8ab
+vol1=$(printf "%s-vol%02d" $V0 $i)
14f8ab
 TEST $CLI_2 volume set $vol1 performance.readdir-ahead on
14f8ab
-vol2=$(printf "%s-vol%02d" $V0 2)
14f8ab
-TEST $CLI_2 volume set $vol2 performance.readdir-ahead on
14f8ab
+done
14f8ab
 
14f8ab
 # Bring back 1st glusterd
14f8ab
 TEST $glusterd_1
14f8ab
 EXPECT_WITHIN $PROBE_TIMEOUT 2 peer_count
14f8ab
 
14f8ab
+TESTS_EXPECTED_IN_LOOP=4
14f8ab
+for i in `seq 1 3 15`
14f8ab
+do
14f8ab
+vol1=$(printf "%s-vol%02d" $V0 $i)
14f8ab
 EXPECT_WITHIN $PROBE_TIMEOUT "on" volinfo_field_1 $vol1 performance.readdir-ahead
14f8ab
-
14f8ab
-vol_name=$(printf "%s-vol%02d" $V0 2)
14f8ab
-EXPECT_WITHIN $PROBE_TIMEOUT "on" volinfo_field_1 $vol2 performance.readdir-ahead
14f8ab
+done
14f8ab
 
14f8ab
 cleanup
14f8ab
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
14f8ab
index efa5a86..8f1525e 100644
14f8ab
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
14f8ab
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
14f8ab
@@ -3542,7 +3542,7 @@ glusterd_add_volumes_to_export_dict(dict_t **peer_data)
14f8ab
             if ((i + 1) != totthread) {
14f8ab
                 arg->end = ((i + 1) * vol_per_thread_limit);
14f8ab
             } else {
14f8ab
-                arg->end = ((i * vol_per_thread_limit) + endindex);
14f8ab
+                arg->end = (((i + 1) * vol_per_thread_limit) + endindex);
14f8ab
             }
14f8ab
             th_ret = gf_thread_create_detached(
14f8ab
                 &th_id, glusterd_add_bulk_volumes_create_thread, arg,
14f8ab
-- 
14f8ab
1.8.3.1
14f8ab