summaryrefslogtreecommitdiffstats
path: root/xlators/cluster/dht/src/dht-selfheal.c
diff options
context:
space:
mode:
authorshishir gowda <sgowda@redhat.com>2013-01-23 09:59:59 +0530
committerAnand Avati <avati@redhat.com>2013-01-23 23:43:39 -0800
commit6fd654dc94fae49fb84336bd2e92c7cc893280e3 (patch)
treef4924f097f79a2c846c230efcb731a7b20d91e5d /xlators/cluster/dht/src/dht-selfheal.c
parent8dc7707c1b32465551d5d5553057e04748945fda (diff)
cluster/distribute: get_layout should account only available subvolsv3.4.0qa7
The earlier logic used to check if (layout-spread-count <= subvol_cnt - decommissioned bricks). With this if a subvol was down, and layout-spread was > upsubvols, a mkdir ended up creating holes in the layout. The fix is to consider only the combination of subvols which are usable (not down or not decommissioned). Change-Id: I61ad3bcaf4589f5a75f7887cfa595c98311ae3bb BUG: 902610 Signed-off-by: shishir gowda <sgowda@redhat.com> Reviewed-on: http://review.gluster.org/4412 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'xlators/cluster/dht/src/dht-selfheal.c')
-rw-r--r--xlators/cluster/dht/src/dht-selfheal.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/xlators/cluster/dht/src/dht-selfheal.c b/xlators/cluster/dht/src/dht-selfheal.c
index fbe4cab3ea3..8463abdbfaf 100644
--- a/xlators/cluster/dht/src/dht-selfheal.c
+++ b/xlators/cluster/dht/src/dht-selfheal.c
@@ -550,11 +550,10 @@ dht_get_layout_count (xlator_t *this, dht_layout_t *layout, int new_layout)
}
/* if layout->spread_cnt is set, check if it is <= available
- * subvolumes (excluding bricks that are being decommissioned). Else
- * return count */
+ * subvolumes (down brick and decommissioned bricks are considered
+ * un-availbale). Else return count (available up bricks) */
count = ((layout->spread_cnt &&
- (layout->spread_cnt <=
- (conf->subvolume_cnt - conf->decommission_subvols_cnt))) ?
+ (layout->spread_cnt <= count)) ?
layout->spread_cnt : ((count) ? count : 1));
return count;