[Gluster-devel] answer_list in EC xlator
fanghuang.data at yahoo.com
fanghuang.data at yahoo.com
Wed Jun 3 15:51:14 UTC 2015
> On Wednesday, 3 June 2015, 19:43, "fanghuang.data at yahoo.com" <fanghuang.data at yahoo.com> wrote:
> > On Wednesday, 3 June 2015, 15:22, Xavier Hernandez <xhernandez at datalab.es>
> wrote:
>
>> On 06/03/2015 05:40 AM, Pranith Kumar Karampuri wrote:
>>> On 06/02/2015 08:08 PM, fanghuang.data at yahoo.com wrote:
>>>> Hi all,
>>>>
>>>> As I reading the source codes of EC xlator, I am confused by the
>>>> cbk_list and answer_list defined in struct _ec_fop_data. Why do we
>>>> need two lists to combine the results of callback?
>>>>
>>>> Especially for the answer_list, it is initialized
>>>> in ec_fop_data_allocate, then the nodes are added
>>>> in ec_cbk_data_allocate. Without being any accessed during the
>>>> lifetime of fop, the whole list finally is released in
> ec_fop_cleanup.
>>>> Do I miss something for the answer_list?
>>> +Xavi.
>>>
>>> hi,
>>> The only reason I found is that It is easier to cleanup cbks using
>>> answers_list. You can check ec_fop_cleanup() function on latest master
>>> to check how this is.
>>
>> You are right. Currently answer_list is only used to cleanup all cbks
>> received while cbk_list is used to track groups of consistent answers.
>> Although currently doesn't happen, if error coercing or special
>> attribute handling are implemented, it could be possible that one cbk
>> gets referenced more than once in cbk_list, making answer_list
>> absolutely necessary.
>>
>
> That's a good point to put all the cbks into one group and put those with
> consistent answers into the other group. But this designing policy cannot
> be understood easily from the comments, source codes or the list names
> (cbk_list,
> answer_list). Could we rename the cbk_list to consist_list or something else
> easier to be followed?
>
>>
>>> Combining of cbks is a bit involved until you
>>> understand it but once you do, it is amazing. I tried to add comments
>>> for this part of code and sent a patch, but we forgot to merge it :-)
>>> http://review.gluster.org/9982. If you think we can add more
>>> comments/change this part of code in a way it makes it easier, let us
>>> know. We would love your feedback :-). Wait for Xavi's response as
> well.
>>>
>
> This patch is much clearer. For the function ec_combine_update_groups,
> since we only operate on one list, should we use ec_combine_update_group? The
> word "groups" is confusing for readers who may think there are two or
> more groups.
>
I got it finally. The cbk-list actually maintains multi-groups of the same answer sorted
by the count. As Xavi said, one cbk may exist in different groups. So we need an
answer_list to do cleanup job. Pranith's patch explains it clearly. Well it is
really amazing.
--
Fang Huang
More information about the Gluster-devel
mailing list