summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorshishir gowda <sgowda@redhat.com>2013-05-21 16:29:32 +0530
committerVijay Bellur <vbellur@redhat.com>2013-12-16 23:15:06 -0800
commit8abd500b79233c292a6098fe4e3672cacb2017d0 (patch)
tree0d7fff2ee838f3bd2ba621eeaa679f6954a0800e
parent790c2813ef4898b28ebae8545c8d891ac4114bf1 (diff)
cluster/dht: Ignore decommissioned subvol in overlap optimization
Change-Id: Ib727948c6e21b19fd509f258ff0aea1c5d1a84d1 BUG: 966845 Signed-off-by: shishir gowda <sgowda@redhat.com> Reviewed-on: http://review.gluster.org/5056 Reviewed-by: Amar Tumballi <amarts@redhat.com> Reviewed-by: Jeff Darcy <jdarcy@redhat.com> Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-on: http://review.gluster.org/6517 Reviewed-by: Shishir Gowda <gowda.shishir@gmail.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
-rw-r--r--xlators/cluster/dht/src/dht-selfheal.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/xlators/cluster/dht/src/dht-selfheal.c b/xlators/cluster/dht/src/dht-selfheal.c
index 39ee2b70be3..f82d7227ac3 100644
--- a/xlators/cluster/dht/src/dht-selfheal.c
+++ b/xlators/cluster/dht/src/dht-selfheal.c
@@ -669,6 +669,13 @@ dht_selfheal_layout_maximize_overlap (call_frame_t *frame, loc_t *loc,
max_overlap = 0;
max_overlap_idx = i;
for (j = (i + 1); j < new->cnt; ++j) {
+ if (new->list[j].err > 0) {
+ /* Subvol might be marked for decommission
+ with EINVAL, or some other serious error
+ marked with positive errno.
+ */
+ continue;
+ }
/* Calculate the overlap now. */
curr_overlap = OV_ENTRY(i,i) + OV_ENTRY(j,j);
/* Calculate the overlap after the proposed swap. */