[Lustre-devel] OSD iterator interface
bzzz at sun.com
Mon Apr 6 00:21:48 PDT 2009
I agree with what Oleg said. I think there are two-stages processing here:
1) osd should be able to clean "value" from compatibility stuff like inodes
2) mdd should be able to store this value in own buffer in, possible, some
>>>>> di wang (dw) writes:
dw> In new MDS stack, osd suppose do not understand Directory (IMHO), and
dw> it only provides
dw> index API. MDD will use the index API to fill the dir entries.
dw> The filldir in current EA index API is just for compatible with old version
dw> of MDS. Maybe we need bulk index API for readdir ? But Alex should
dw> know more.
dw> Oleg Drokin wrote:
>> While inspecting patches in bug 17560 it struck me as odd that
>> we are fetching the data one entry at a time from the filesystem,
>> so I asked a many-entries at a time
>> approach to be implemented. Now the patch in the bug just fills
>> the osd buffer with entries (after parsing them) and then actual
>> user (e.g. __mdd_readpage)
>> reparses the osd buffer and copies data to its own. This is a
>> lot of wasted processing, copies and then some extra memory usage.
>> So in my opinion the iterator interface should be reworked to
>> accept an iterator and a buffer and then __mdd_readdir will pass in
>> its own
>> parsing of the data (with possible generalized preparsing from
>> osd so that we are fs-neutral) and will directly fill its own
>> buffer to the amount it actually needs,
>> kind of like any kernel filldir functions already work right now.
>> Am I missing something stupid? Are there any objections, would
>> this break anything?
>> Lustre-devel mailing list
>> Lustre-devel at lists.lustre.org
More information about the lustre-devel