Subject: + lib-scatterlist-factor-out-sg_miter_get_next_page-from-sg_miter_next.patch added to -mm tree To: akinobu.mita@xxxxxxxxx,JBottomley@xxxxxxxxxxxxx,davem@xxxxxxxxxxxxx,dgilbert@xxxxxxxxxxxx,herbert@xxxxxxxxxxxxxxxxxxx,horia.geanta@xxxxxxxxxxxxx,imre.deak@xxxxxxxxx,tj@xxxxxxxxxx From: akpm@xxxxxxxxxxxxxxxxxxxx Date: Tue, 25 Jun 2013 13:52:47 -0700 The patch titled Subject: lib/scatterlist: factor out sg_miter_get_next_page() from sg_miter_next() has been added to the -mm tree. Its filename is lib-scatterlist-factor-out-sg_miter_get_next_page-from-sg_miter_next.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Akinobu Mita <akinobu.mita@xxxxxxxxx> Subject: lib/scatterlist: factor out sg_miter_get_next_page() from sg_miter_next() This patchset introduces sg_pcopy_from_buffer() and sg_pcopy_to_buffer(), which copy data between a linear buffer and an SG list. The only difference between sg_pcopy_{from,to}_buffer() and sg_copy_{from,to}_buffer() is an additional argument that specifies the number of bytes to skip the SG list before copying. The main reason for introducing these functions is to fix a problem in scsi_debug module. And there is a local function in crypto/talitos module, which can be replaced by sg_pcopy_to_buffer(). This patch: sg_miter_get_next_page() is used to proceed page iterator to the next page if necessary, and will be used to implement the variants of sg_copy_{from,to}_buffer() later. Signed-off-by: Akinobu Mita <akinobu.mita@xxxxxxxxx> Acked-by: Tejun Heo <tj@xxxxxxxxxx> Cc: Tejun Heo <tj@xxxxxxxxxx> Cc: Imre Deak <imre.deak@xxxxxxxxx> Cc: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Cc: "David S. Miller" <davem@xxxxxxxxxxxxx> Cc: "James E.J. Bottomley" <JBottomley@xxxxxxxxxxxxx> Cc: Douglas Gilbert <dgilbert@xxxxxxxxxxxx> Cc: Horia Geanta <horia.geanta@xxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- lib/scatterlist.c | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff -puN lib/scatterlist.c~lib-scatterlist-factor-out-sg_miter_get_next_page-from-sg_miter_next lib/scatterlist.c --- a/lib/scatterlist.c~lib-scatterlist-factor-out-sg_miter_get_next_page-from-sg_miter_next +++ a/lib/scatterlist.c @@ -453,6 +453,28 @@ void sg_miter_start(struct sg_mapping_it } EXPORT_SYMBOL(sg_miter_start); +static bool sg_miter_get_next_page(struct sg_mapping_iter *miter) +{ + if (!miter->__remaining) { + struct scatterlist *sg; + unsigned long pgoffset; + + if (!__sg_page_iter_next(&miter->piter)) + return false; + + sg = miter->piter.sg; + pgoffset = miter->piter.sg_pgoffset; + + miter->__offset = pgoffset ? 0 : sg->offset; + miter->__remaining = sg->offset + sg->length - + (pgoffset << PAGE_SHIFT) - miter->__offset; + miter->__remaining = min_t(unsigned long, miter->__remaining, + PAGE_SIZE - miter->__offset); + } + + return true; +} + /** * sg_miter_next - proceed mapping iterator to the next mapping * @miter: sg mapping iter to proceed @@ -478,22 +500,9 @@ bool sg_miter_next(struct sg_mapping_ite * Get to the next page if necessary. * __remaining, __offset is adjusted by sg_miter_stop */ - if (!miter->__remaining) { - struct scatterlist *sg; - unsigned long pgoffset; + if (!sg_miter_get_next_page(miter)) + return false; - if (!__sg_page_iter_next(&miter->piter)) - return false; - - sg = miter->piter.sg; - pgoffset = miter->piter.sg_pgoffset; - - miter->__offset = pgoffset ? 0 : sg->offset; - miter->__remaining = sg->offset + sg->length - - (pgoffset << PAGE_SHIFT) - miter->__offset; - miter->__remaining = min_t(unsigned long, miter->__remaining, - PAGE_SIZE - miter->__offset); - } miter->page = sg_page_iter_page(&miter->piter); miter->consumed = miter->length = miter->__remaining; _ Patches currently in -mm which might be from akinobu.mita@xxxxxxxxx are linux-next.patch lib-scatterlist-factor-out-sg_miter_get_next_page-from-sg_miter_next.patch lib-scatterlist-introduce-sg_pcopy_from_buffer-and-sg_pcopy_to_buffer.patch crypto-talitos-use-sg_pcopy_to_buffer.patch scsi_debug-fix-do_device_access-with-wrap-around-range.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html