Skip to contentSkip to conversation

sg_is_chain() call in coh901318_lli_fill_sg()

DISCUSSION Bart Van Assche 2 participants 2 messages Feb 4, 2013 – Feb 19, 2013

lore
Share & tools
lore
#0 lore raw

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.

#1 lore raw

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
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 ?

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