From: James Simmons Date: Tue, 9 Jun 2020 22:39:06 +0000 (-0400) Subject: LU-12511 lov: use lov_pattern_support() to verify lmm X-Git-Tag: 2.13.55~124 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=0f607f22696ffcf0e8567ed3a3149a0ba5e5b1e9;hp=d6e103e6950d99b88141d4b26982889258c774c5 LU-12511 lov: use lov_pattern_support() to verify lmm We can use lov_pattern_support(), which is used by the server and userland code, to ensure lmm is valid instead of open coding. Change-Id: I44051e6e2dba2f0b7e481572bb58d776724aecd8 Signed-off-by: James Simmons Reviewed-on: https://review.whamcloud.com/38791 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: Mike Pershin --- diff --git a/lustre/lov/lov_ea.c b/lustre/lov/lov_ea.c index 3f73c71..17a9b7e 100644 --- a/lustre/lov/lov_ea.c +++ b/lustre/lov/lov_ea.c @@ -81,6 +81,7 @@ static loff_t lov_tgt_maxbytes(struct lov_tgt_desc *tgt) static int lsm_lmm_verify_v1v3(struct lov_mds_md *lmm, size_t lmm_size, u16 stripe_count) { + u32 pattern = le32_to_cpu(lmm->lmm_pattern); int rc = 0; if (stripe_count > LOV_V1_INSANE_STRIPE_COUNT) { @@ -98,10 +99,7 @@ static int lsm_lmm_verify_v1v3(struct lov_mds_md *lmm, size_t lmm_size, goto out; } - if (lov_pattern(le32_to_cpu(lmm->lmm_pattern)) != LOV_PATTERN_MDT && - lov_pattern(le32_to_cpu(lmm->lmm_pattern)) != LOV_PATTERN_RAID0 && - lov_pattern(le32_to_cpu(lmm->lmm_pattern)) != - (LOV_PATTERN_RAID0 | LOV_PATTERN_OVERSTRIPING)) { + if (!lov_pattern_supported(lov_pattern(pattern))) { rc = -EINVAL; CERROR("lov: unrecognized striping pattern: rc = %d\n", rc); lov_dump_lmm_common(D_WARNING, lmm);