GOTO(out, rc = -EINVAL);
}
+ mo->ldo_pattern = le32_to_cpu(v1->lmm_pattern);
mo->ldo_stripe_size = le32_to_cpu(v1->lmm_stripe_size);
mo->ldo_stripenr = le16_to_cpu(v1->lmm_stripe_count);
mo->ldo_layout_gen = le16_to_cpu(v1->lmm_layout_gen);
RETURN(-EINVAL);
}
- if (v1->lmm_pattern != 0 && v1->lmm_pattern != LOV_PATTERN_RAID0) {
+ v1->lmm_magic = magic;
+ if (v1->lmm_pattern == 0)
+ v1->lmm_pattern = LOV_PATTERN_RAID0;
+ if (lov_pattern(v1->lmm_pattern) != LOV_PATTERN_RAID0) {
CERROR("invalid pattern: %x\n", v1->lmm_pattern);
RETURN(-EINVAL);
}
+ lo->ldo_pattern = v1->lmm_pattern;
if (v1->lmm_stripe_size)
lo->ldo_stripe_size = v1->lmm_stripe_size;
} else
lod_object_set_pool(lo, NULL);
+ /* fixup for released file */
+ if (lo->ldo_pattern & LOV_PATTERN_F_RELEASED) {
+ lo->ldo_released_stripenr = lo->ldo_stripenr;
+ lo->ldo_stripenr = 0;
+ }
+
RETURN(0);
}
if (rc)
GOTO(out, rc);
+ /* A released file is being created */
+ if (lo->ldo_stripenr == 0)
+ GOTO(out, rc = 0);
+
if (likely(lo->ldo_stripe == NULL)) {
/*
* no striping has been created so far