Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752281AbbEHJVL (ORCPT ); Fri, 8 May 2015 05:21:11 -0400 Received: from zeniv.linux.org.uk ([195.92.253.2]:55796 "EHLO ZenIV.linux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751380AbbEHJVH (ORCPT ); Fri, 8 May 2015 05:21:07 -0400 Date: Fri, 8 May 2015 10:20:44 +0100 From: Al Viro To: Ingo Molnar Cc: Jerome Glisse , Dave Hansen , Dan Williams , Linus Torvalds , Linux Kernel Mailing List , Boaz Harrosh , Jan Kara , Mike Snitzer , Neil Brown , Benjamin Herrenschmidt , Heiko Carstens , Chris Mason , Paul Mackerras , "H. Peter Anvin" , Christoph Hellwig , Alasdair Kergon , "linux-nvdimm@lists.01.org" , Mel Gorman , Matthew Wilcox , Ross Zwisler , Rik van Riel , Martin Schwidefsky , Jens Axboe , "Theodore Ts'o" , "Martin K. Petersen" , Julia Lawall , Tejun Heo , linux-fsdevel , Andrew Morton , paulmck@linux.vnet.ibm.com Subject: Re: [PATCH v2 00/10] evacuate struct page from the block layer, introduce __pfn_t Message-ID: <20150508092044.GH889@ZenIV.linux.org.uk> References: <20150507173641.GA21781@gmail.com> <554BA748.9030804@linux.intel.com> <20150507191107.GB22952@gmail.com> <20150507193635.GC5966@gmail.com> <20150507194832.GB23511@gmail.com> <20150507195313.GA23597@gmail.com> <20150507201815.GD5966@gmail.com> <20150508053759.GA25786@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150508053759.GA25786@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1149 Lines: 24 On Fri, May 08, 2015 at 07:37:59AM +0200, Ingo Molnar wrote: > same as iov_iter_get_pages(), except that pages array is allocated > (kmalloc if possible, vmalloc if that fails) and left for caller to > free. Lustre and NFS ->direct_IO() switched to it. > > Signed-off-by: Al Viro > > So if code does iov_iter_get_pages_alloc() on a user address that has > a real struct page behind it - and some other code does a regular > get_user_pages() on it, we'll have two sets of struct page > descriptors, the 'real' one, and a fake allocated one, right? Huh? iov_iter_get_pages() is given an array of pointers to struct page, which it fills with what it finds. iov_iter_get_pages_alloc() *allocates* such an array, fills that with what it finds and gives the allocated array to caller. We are not allocating any struct page instances in either of those. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/