X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Flfsck%2Flfsck_layout.c;h=e786eb3f7f1e8559ed5325cf312200e995eebaf0;hb=aebb405e32e4d40bc2d70a95356b3b85be280668;hp=e31817aec94615d6a220aa4cef367303cf0253cb;hpb=e2539c0667525aff8d985d018c4ed077d95ba882;p=fs%2Flustre-release.git diff --git a/lustre/lfsck/lfsck_layout.c b/lustre/lfsck/lfsck_layout.c index e31817a..e786eb3 100644 --- a/lustre/lfsck/lfsck_layout.c +++ b/lustre/lfsck/lfsck_layout.c @@ -440,6 +440,7 @@ static int lfsck_layout_verify_header(struct dt_object *obj, __u64 start = le64_to_cpu(lcme->lcme_extent.e_start); __u64 end = le64_to_cpu(lcme->lcme_extent.e_end); __u32 comp_id = le32_to_cpu(lcme->lcme_id); + struct lov_mds_md_v1 *v1; bool ext, inited, zero; __u32 flags; @@ -492,10 +493,15 @@ static int lfsck_layout_verify_header(struct dt_object *obj, return -EINVAL; } - rc = lfsck_layout_verify_header_v1v3(obj, - (struct lov_mds_md_v1 *)((char *)lmm + - le32_to_cpu(lcme->lcme_offset)), start, - end, comp_id, ext, &p_dom); + v1 = (struct lov_mds_md_v1 *)((char *)lmm + + le32_to_cpu(lcme->lcme_offset)); + if (le32_to_cpu(v1->lmm_magic) == LOV_MAGIC_FOREIGN) + rc = lfsck_layout_verify_header_foreign( + obj, (struct lov_foreign_md *)v1, + le32_to_cpu(lcme->lcme_size)); + else + rc = lfsck_layout_verify_header_v1v3(obj, v1, + start, end, comp_id, ext, &p_dom); p_zero = zero; }