(cc'ing Jens) On Wed, Sep 26, 2012 at 11:49:00AM +0200, Maxim Levitsky wrote: > Useful helper to know the number of entries in scatterlist. > > Signed-off-by: Maxim Levitsky <maximlevit...@gmail.com> > --- > include/linux/scatterlist.h | 1 + > lib/scatterlist.c | 22 ++++++++++++++++++++++ > 2 files changed, 23 insertions(+) > > diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h > index 7b600da..4bd6c06 100644 > --- a/include/linux/scatterlist.h > +++ b/include/linux/scatterlist.h > @@ -201,6 +201,7 @@ static inline void *sg_virt(struct scatterlist *sg) > return page_address(sg_page(sg)) + sg->offset; > } > > +int sg_nents(struct scatterlist *sg); > struct scatterlist *sg_next(struct scatterlist *); > struct scatterlist *sg_last(struct scatterlist *s, unsigned int); > void sg_init_table(struct scatterlist *, unsigned int); > diff --git a/lib/scatterlist.c b/lib/scatterlist.c > index e76d85c..5cd9cdc 100644 > --- a/lib/scatterlist.c > +++ b/lib/scatterlist.c > @@ -39,6 +39,28 @@ struct scatterlist *sg_next(struct scatterlist *sg) > EXPORT_SYMBOL(sg_next); > > /** > + * sg_nents - return total count of entries in scatterlist > + * @sg: The scatterlist > + * > + * Description: > + * Allows to know how many entries are in sg, taking into acount > + * chaining as well > + * > + **/ > +int sg_nents(struct scatterlist *sg) > +{ > + int nents = 0; > + while (sg) { > + nents++; > + sg = sg_next(sg); > + } > + > + return nents; > +} > +EXPORT_SYMBOL(sg_nents);
How about the following instead? for (nents = 0; sg; sg = sg_next(sg)) nents++; return nents; Other than that, Acked-by: Tejun Heo <t...@kernel.org> Thanks. -- tejun -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/