diff --git a/lustre/lov/lov_internal.h b/lustre/lov/lov_internal.h index 721dfa54985130da3b6f20cca4b95c490dff7a14..a6d981f0dd1105ca5684a2103f8d200989d78bbd 100644 --- a/lustre/lov/lov_internal.h +++ b/lustre/lov/lov_internal.h @@ -227,7 +227,7 @@ int lov_fini_statfs_set(struct lov_request_set *set); /* lov_obd.c */ void lov_fix_desc(struct lov_desc *desc); -int lov_get_stripecnt(struct lov_obd *lov, int stripe_count); +int lov_get_stripecnt(struct lov_obd *lov, __u32 stripe_count); void lov_getref(struct obd_device *obd); void lov_putref(struct obd_device *obd); diff --git a/lustre/lov/lov_pack.c b/lustre/lov/lov_pack.c index b13a0674dd19dc0267d5db4220ef3ab3483da1f6..5f1416018f30a8c6f37000233417324214861aa1 100644 --- a/lustre/lov/lov_pack.c +++ b/lustre/lov/lov_pack.c @@ -108,7 +108,12 @@ int lov_packmd(struct obd_export *exp, struct lov_mds_md **lmmp, lsm->lsm_magic, LOV_MAGIC); RETURN(-EINVAL); } - stripe_count = lsm->lsm_stripe_count; + if (!lmmp) { + stripe_count = lov_get_stripecnt(lov, lsm->lsm_stripe_count); + lsm->lsm_stripe_count = stripe_count; + } else { + stripe_count = lsm->lsm_stripe_count; + } } /* XXX LOV STACKING call into osc for sizes */ @@ -158,7 +163,7 @@ int lov_packmd(struct obd_export *exp, struct lov_mds_md **lmmp, } /* Find the max stripecount we should use */ -int lov_get_stripecnt(struct lov_obd *lov, int stripe_count) +int lov_get_stripecnt(struct lov_obd *lov, __u32 stripe_count) { if (!stripe_count) stripe_count = lov->desc.ld_default_stripe_count;