> How about the patch below ?

The patch looks good to me, but while we touch this area, how about
throwing in a few cosmetic fixes as well?

> -             if (i && page_addr != dma_addr) {
> +             if (i && (page_addr != dma_addr || last_page_off != 0)) {
>                       if (last_end_dma_addr != dma_addr) {

Wo about we one or two sentences for each of the conditions here?

>                               /* gap */
> -                             goto done;
> -
> +                             break;
>                       } else if (last_page_off + dma_len <= mr->page_size) {
>                               /* chunk this fragment with the last */
>                               mr->length += dma_len;

It would be great to avoid the else clauses if we already to a
break/continue/goto to make the code flow more clear, e.g.


                        /*
                         * Gap to the previous segment, we'll need to return
                         * and use another FR to map the reminder.
                         */
                        if (last_end_dma_addr != dma_addr)
                                break;

                        /*
                         * See if this segment is contiguous to the
                         * previous one and just merge it in that case.
                         */
                        if (last_page_off + dma_len <= mr->page_size) {
                                last_end_dma_addr += dma_len;
                                last_page_off += dma_len;
                                mr->length += dma_len;
                                continue;
                        }

                        /*
                         * New page-aligned segment to map:
                         */
                        page_addr = last_page_addr + mr->page_size;
                        dma_len -= mr->page_size - last_page_off;


--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to