Progressive File Layout (PFL) (LU-8998)

[LU-9185] flawed layout add replay Created: 06/Mar/17  Updated: 27/Mar/17  Resolved: 27/Mar/17

Status: Resolved
Project: Lustre
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Technical task Priority: Major
Reporter: Niu Yawei (Inactive) Assignee: Zhenyu Xu
Resolution: Fixed Votes: 0
Labels: None

Rank (Obsolete): 9223372036854775807

 Description   

Current layout add replay is flawed, because layout add replies whole file LOVEA to client, and when replay, client sends the whole LOVEA back to server, server can't know which components were newly created by this layout add, and the replay would have to calls lod_sub_object_declare_create()/lod_sub_object_create() against all components, even for the pre-existing components.

A proposal fix is to add one more 'buffer' parameter to dt_xattr_set(), and it's passed down to lod_xattr_set() -> lod_striping_create(), in lod_striping_create(), the 'buffer' will be filled with the LOVEA for the newly created components, at the end, the 'buffer' will be copied to reply buffer and returned to client, so that on replay, client will send back the partial LOVEA which being newly created, and server knows which components needs be re-processed.

In a word, layout add creates only partial layout, so server should return the partial layout to client but not the whole LOVEA.



 Comments   
Comment by Gerrit Updater [ 06/Mar/17 ]

Bobi Jam (bobijam@hotmail.com) uploaded a new patch: https://review.whamcloud.com/25824
Subject: LU-9185 pfl: fix replay of component add
Project: fs/lustre-release
Branch: pfl
Current Patch Set: 1
Commit: 35d06135c9b7a127668f4705c2857a0beeb8a52e

Comment by Jinshan Xiong (Inactive) [ 06/Mar/17 ]

Why couldn't it filter out the existing components at replay time?

Comment by Niu Yawei (Inactive) [ 07/Mar/17 ]

Why couldn't it filter out the existing components at replay time?

Because server can't tell which are pre-existing components, unless client tells more information.

With dynamic layout introduced, layout add won't instantiate objects anymore (I think the semantic of layout add would be changed a little bit), so this problem can be fixed in a much easier way: remove all the code of instantiate objects, replay with same instantiated objects. Layout add now becomes a simple xattr set.

Comment by Jinshan Xiong (Inactive) [ 07/Mar/17 ]

I may miss something - but isn't newly added components deduced as (replay components)^(existing components)?

Comment by Niu Yawei (Inactive) [ 07/Mar/17 ]

I may miss something - but isn't newly added components deduced as (replay components)^(existing components)?

I think you are right, that fix requires much less code changes than my original proposal. Anyway, since new layout add won't instantiate objects, now we need only to remove all that replay handling code.

Generated at Sat Feb 10 02:23:58 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.