summaryrefslogtreecommitdiffstats
path: root/xlators/cluster/ec/src/ec-common.c
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/cluster/ec/src/ec-common.c')
-rw-r--r--xlators/cluster/ec/src/ec-common.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/xlators/cluster/ec/src/ec-common.c b/xlators/cluster/ec/src/ec-common.c
index 4d7beee63b9..2f96ac10dbf 100644
--- a/xlators/cluster/ec/src/ec-common.c
+++ b/xlators/cluster/ec/src/ec-common.c
@@ -1166,7 +1166,13 @@ void ec_get_size_version(ec_fop_data_t * fop)
goto out;
}
- ec_lookup(fop->frame, fop->xl, fop->mask, EC_MINIMUM_MIN,
+ /* For normal fops, ec_lookup() must succeed on at least EC_MINIMUM_MIN
+ * bricks, however when this is called as part of a self-heal operation
+ * the mask of target bricks (fop->mask) could contain less than
+ * EC_MINIMUM_MIN bricks, causing the lookup to always fail. Thus we
+ * always use the same minimum used for the main fop.
+ */
+ ec_lookup(fop->frame, fop->xl, fop->mask, fop->minimum,
ec_get_size_version_set, NULL, &loc, xdata);
fop->frame->root->uid = uid;