Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752787AbbEHKCA (ORCPT ); Fri, 8 May 2015 06:02:00 -0400 Received: from zeniv.linux.org.uk ([195.92.253.2]:56139 "EHLO ZenIV.linux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752274AbbEHKBz (ORCPT ); Fri, 8 May 2015 06:01:55 -0400 Date: Fri, 8 May 2015 11:00: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: <20150508100044.GI889@ZenIV.linux.org.uk> References: <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> <20150508092044.GH889@ZenIV.linux.org.uk> <20150508092601.GA11002@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150508092601.GA11002@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: 1214 Lines: 27 On Fri, May 08, 2015 at 11:26:01AM +0200, Ingo Molnar wrote: > > * Al Viro wrote: > > > On Fri, May 08, 2015 at 07:37:59AM +0200, Ingo Molnar wrote: > > > > > 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. > > Ah, stupid me - thanks for the explanation! My fault, actually - this "pages array" should've been either "'pages' array" or "array of pointers to struct page". -- 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/