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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5E173C6FD1F for ; Thu, 16 Mar 2023 17:29:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E842A900003; Thu, 16 Mar 2023 13:29:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E33E6900002; Thu, 16 Mar 2023 13:29:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CFCC3900003; Thu, 16 Mar 2023 13:29:06 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id C16B3900002 for ; Thu, 16 Mar 2023 13:29:06 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 8F6961C5ECA for ; Thu, 16 Mar 2023 17:29:06 +0000 (UTC) X-FDA: 80575447092.16.223DDE7 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf26.hostedemail.com (Postfix) with ESMTP id EE36714001F for ; Thu, 16 Mar 2023 17:29:02 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=r+edEyVd; spf=none (imf26.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1678987743; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=SEN+HKxo7EQ3q5D6tuhe44Eox24eDP+iTTu9PwnX/OM=; b=foDI1sT6wdHRVdTDw5a18MmGMZEjSubN/0ipbS0kL2WLST/iqtYq4L0tSv4TZDgBDFFsCU zrk2hyjNnuI+G1HqGCqF/4r8cHblrEd0j7lM3c1CUNG4EZPSRMSkUUXIgxI4JshWJzWlM2 LkWsmMbFzRu72PHIswmKY+oPtZu8r7g= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=r+edEyVd; spf=none (imf26.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678987743; a=rsa-sha256; cv=none; b=NZK/wUEbsKi5hMH2TAL7ekyDWvCWMHkmAtGWtSLsFwBYORE5g4HW+yco8PsgzSveJlaKRv gayogu3xizVcmMCnU9eoTmP6y6utsRctpK9wA+qpuMEOGzAs7WJZqFquZla49IccSdSDBq MeBazCgaRT5by+I7wZoxxoWnEoKAzkQ= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=SEN+HKxo7EQ3q5D6tuhe44Eox24eDP+iTTu9PwnX/OM=; b=r+edEyVdE8CHzECGKqBOw2z/6K pmwPgko9E9SA73wK+2z4oOZWpCopkXUaE5ym0bys0jdwzPDo6kraGswMtU87rc/adnU9rk/zyFN/h 5ICv8yRV71KH4jem5zFLwoESEv41E4dclTYq5L4qs/1EegQkOxHIyoRxw8HKBGcgeTN2ARXr8oz23 0eYYj2EHDmhrqCz2dDGjCTGHKBsgzqCO0FDLUtedrD3mnegEZybLCRJuWXhKOqJJYh8u7uwUY+xxc xbrG0pH/tRc2U9v4mUJrLqa22NZ6uIr5MTBVRFYhWDGL2gA/WyyAEVT1H6yFIrBPnlo06u+othVO6 OaUm+ZdA==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1pcrP8-00F226-M0; Thu, 16 Mar 2023 17:28:42 +0000 Date: Thu, 16 Mar 2023 17:28:42 +0000 From: Matthew Wilcox To: David Howells Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Al Viro , Christoph Hellwig , Jens Axboe , Jeff Layton , Christian Brauner , Linus Torvalds , netdev@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Bernard Metzler , Tom Talpey , linux-rdma@vger.kernel.org Subject: Re: [RFC PATCH 02/28] Add a special allocator for staging netfs protocol to MSG_SPLICE_PAGES Message-ID: References: <20230316152618.711970-1-dhowells@redhat.com> <20230316152618.711970-3-dhowells@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230316152618.711970-3-dhowells@redhat.com> X-Rspamd-Queue-Id: EE36714001F X-Stat-Signature: z59jwrmpe1kmqg5es39xeefxbkybmx6c X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1678987742-15012 X-HE-Meta: U2FsdGVkX1/Xr0/wF0lrEEI7vwjtP63ErFo0gi57aXwPXCPT29PofSf1qywiP0AN+tbnJNNoGjPwvG2Zu16E9LaJObQjK8uyR6O64ITjORDup7HK5k5yz/ii0bTdzfjdjhfYiTmtrpQggadjIW0n9QwCNpDmUAiivUDOZFeQozBr64dwNZINbyMAp4o+oLgOEbKT3nNPFmXconDHO5yJRjSVmYs3e+eGBTDxZvBa5wx05xN6N4qRYSua72kWrKiW2ZgIcszk8uQDb5Q8JqYwaUEsGNd62u6fjcRn3oTQdai7kpsAhy/8ZX+PNorAVHa6+1Ufbo3/Hd2u5i16IzfPhrID7PjPsvaOJX3ym2VDY15a4mX5hwK+h45Ne6clbMIczQDGwUCY0ixOONYNklWrdVgL6/lW175A3ajkFiZIrDEVqthNiexVGKQuOX6jriKzfYGTlrUwN1JgRpjuSGoEBNTjAZ6ciS7KyRgc+lHcEMZD/LRrE+pXmwAxQ3/JjNJ27YNcL5vW6YtxH2uKC1mCgldStBU+Yo6qic0ECw4BEKjV8j2dBE4V4FAREvm+3Lmp2TCLarHqn/jwTIVWfArPj33CtHtKqXpBjhLoQFvADa7tzrprXJXCcqzCo8XJ/UUA5E//Ppww9vf8yNOx/cmmGeka8yvDK2PMhlOIwXm0DadyBQx1Y4vEvKXOikYpB1/CTtYRrvCa2sBgPKzL6xy3DHnMQjqH6gyGtN06+j61Km/bBU7a+71s9HnngpPZ6iNCokE0kd5KOBY+iSmYGevwALPmi4j/uqUv7+5TMwM3i+eVuvbaF4A5bV40crhWREv893cGd47VL8TFZg6LcGtqZSRyc4KKvZLDRqYRclWydeVLXybd2btzjf2693rBjvI4oHNOnTTdUqLyXdcZMK0DrDsquK78khTFaLNDb2pihtFkoMF9OIL0sdE8wfQlfrQ758mpK96hI0UpHEu5oSu 6KR1eKj9 ghqonpr4uv2jUAbNNAO4c4Nfhh/ROJsMcIJvRv7Fq1hyi2Fh0qYgscAdsuzcw7+CcXZkRWLi1HDeqOQ2mK/8wb2AAx56GwxNQlmlVZ62l/FilbGZzxtTOLIMrVPRn+RXNYt598Q6wcb9qlEoZ5WGJigoqStz5ot9w2KZTXf1mgvRUd0ZmD/Ni88UqpSo8YWjggDBgjpOj8XAQRCw1xHQUpFe5Weh13y4YkDfr X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Thu, Mar 16, 2023 at 03:25:52PM +0000, David Howells wrote: > If a network protocol sendmsg() sees MSG_SPLICE_DATA, it expects that the > iterator is of ITER_BVEC type and that all the pages can have refs taken on > them with get_page() and discarded with put_page(). Bits of network > filesystem protocol data, however, are typically contained in slab memory > for which the cleanup method is kfree(), not put_page(), so this doesn't > work. > > Provide a simple allocator, zcopy_alloc(), that allocates a page at a time > per-cpu and sequentially breaks off pieces and hands them out with a ref as > it's asked for them. The caller disposes of the memory it was given by > calling put_page(). When a page is all parcelled out, it is abandoned by > the allocator and another page is obtained. The page will get cleaned up > when the last skbuff fragment is destroyed. This feels a _lot_ like the page_frag allocator. Can the two be unified?