sg_is_chain() call in coh901318_lli_fill_sg()
Hello,
I'm trying to understand how coh901318_lli_fill_sg() works by studying the source code of that function. In that function I found the following code:
for_each_sg(sgl, sg, nents, i) {
if (sg_is_chain(sg)) {
[ ... ]Can anyone explain me why that construct makes sense ? As far as I can see in lib/scatterlist.c sg_next() ensures that the for_each_sg() skips those elements for which sg_is_chain(sg) == true. Does that mean that sg_is_chain(sg) always evaluates to false in the above loop ?
Thanks,
Bart.
Hi Bart,
Quoted 10 lines · Bart Van Assche
Hello,
I'm trying to understand how
coh901318_lli_fill_sg()works by studying the source code of that function. In that function I found the following code:for_each_sg(sgl, sg, nents, i) { if (sg_is_chain(sg)) { [ ... ]Can anyone explain me why that construct makes sense ?
I think the answer is: it doesn't make sense.
Quoted 4 lines
As far as I can see
inlib/scatterlist.csg_next()ensures that thefor_each_sg()skips those elements for whichsg_is_chain(sg)== true. Does that mean thatsg_is_chain(sg)always evaluates to false in the above loop ?
Yes, I agree. I'm guilt of adding this check a long time ago due to sg misconceptions. Today I no longer recall what the misconception was. Linus, you may remove this check.
Thanks for spotting this,
Per