[LU-3841] lod_use_defined_striping() asserts on released layouts Created: 27/Aug/13  Updated: 03/Sep/13  Resolved: 03/Sep/13

Status: Closed
Project: Lustre
Component/s: None
Affects Version/s: Lustre 2.5.0
Fix Version/s: Lustre 2.5.0

Type: Bug Priority: Critical
Reporter: John Hammond Assignee: John Hammond
Resolution: Fixed Votes: 0
Labels: HSM, lod

Severity: 3
Rank (Obsolete): 9943

 Description   

In lod_use_defined_striping() the assertion on buf->lb_len must come after the fixup for released layouts.

        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);
        LASSERTF(buf->lb_len >= lov_mds_md_size(mo->ldo_stripenr, magic),
                 "buf %p, mo %p, magic %u\n", buf, mo, magic);

	/* fixup for released file before object initialization */
        if (mo->ldo_pattern & LOV_PATTERN_F_RELEASED) {
                mo->ldo_released_stripenr = mo->ldo_stripenr;
		mo->ldo_stripenr = 0;
        }

Moreover we are passing a _DEF magic to lov_mds_md_size() which only handles non-_DEF magics properly.



 Comments   
Comment by John Hammond [ 27/Aug/13 ]

Please see http://review.whamcloud.com/7467.

Comment by John Hammond [ 03/Sep/13 ]

Patch landed to master.

Generated at Sat Feb 10 01:37:22 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.