From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D4B85C433E0 for ; Mon, 1 Feb 2021 17:37:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id AD44064DD9 for ; Mon, 1 Feb 2021 17:37:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231910AbhBARgo (ORCPT ); Mon, 1 Feb 2021 12:36:44 -0500 Received: from verein.lst.de ([213.95.11.211]:42304 "EHLO verein.lst.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232005AbhBARgd (ORCPT ); Mon, 1 Feb 2021 12:36:33 -0500 Received: by verein.lst.de (Postfix, from userid 2407) id C74656736F; Mon, 1 Feb 2021 18:35:48 +0100 (CET) Date: Mon, 1 Feb 2021 18:35:48 +0100 From: Christoph Hellwig To: Boris Pismenny Cc: dsahern@gmail.com, kuba@kernel.org, davem@davemloft.net, saeedm@nvidia.com, hch@lst.de, sagi@grimberg.me, axboe@fb.com, kbusch@kernel.org, viro@zeniv.linux.org.uk, edumazet@google.com, smalin@marvell.com, boris.pismenny@gmail.com, linux-nvme@lists.infradead.org, netdev@vger.kernel.org, benishay@nvidia.com, ogerlitz@nvidia.com, yorayz@nvidia.com, Ben Ben-Ishay , Or Gerlitz , Yoray Zack Subject: Re: [PATCH v3 net-next 01/21] iov_iter: Introduce new procedures for copy to iter/pages Message-ID: <20210201173548.GA12960@lst.de> References: <20210201100509.27351-1-borisp@mellanox.com> <20210201100509.27351-2-borisp@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210201100509.27351-2-borisp@mellanox.com> User-Agent: Mutt/1.5.17 (2007-11-01) Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On Mon, Feb 01, 2021 at 12:04:49PM +0200, Boris Pismenny wrote: > +static __always_inline __must_check > +size_t ddp_copy_to_iter(const void *addr, size_t bytes, struct iov_iter *i) > +{ > + if (unlikely(!check_copy_size(addr, bytes, true))) > + return 0; > + else > + return _ddp_copy_to_iter(addr, bytes, i); > +} No need for the else after a return, and the normal kernel convention double underscores for magic internal functions. But more importantly: does this belong into the generic header without and comments what the ddp means and when it should be used? > +static void ddp_memcpy_to_page(struct page *page, size_t offset, const char *from, size_t len) Overly long line. But we're also looking into generic helpers for this kind of things, not sure if they made it to linux-next in the meantime, but please check. > +size_t _ddp_copy_to_iter(const void *addr, size_t bytes, struct iov_iter *i) > +{ > + const char *from = addr; > + if (unlikely(iov_iter_is_pipe(i))) > + return copy_pipe_to_iter(addr, bytes, i); > + if (iter_is_iovec(i)) > + might_fault(); > + iterate_and_advance(i, bytes, v, > + copyout(v.iov_base, (from += v.iov_len) - v.iov_len, v.iov_len), > + ddp_memcpy_to_page(v.bv_page, v.bv_offset, > + (from += v.bv_len) - v.bv_len, v.bv_len), > + memcpy(v.iov_base, (from += v.iov_len) - v.iov_len, v.iov_len) > + ) > + > + return bytes; > +} This bloats every kernel build, so please move it into a conditionally built file. And please document the whole thing.