Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp87151ybv; Tue, 18 Feb 2020 18:23:22 -0800 (PST) X-Google-Smtp-Source: APXvYqy+a98kyvLTige1pC3cs2Fo0A1rpmcQuY7In7lFnadGJlX0ba57/lBBhjoKO2Q4V9SALn3T X-Received: by 2002:aca:5486:: with SMTP id i128mr3100909oib.12.1582079002181; Tue, 18 Feb 2020 18:23:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582079002; cv=none; d=google.com; s=arc-20160816; b=cZ0fUbbUVefz11+5lFN7ZOviRQUeRlTtBJQ/pjcKKOk/VdeDNJSgt6YzywOGumik3y ivkN56lH9IjQWMrA7H3OG7lIDHs25Djcr4c5GBXtIiAfYUQbWu2pBnhQ/KkpdvHZGnxP Ewl5XsHNbaRE4q93cerWRjwq9nmWS7lPPQL9EmtI0daLHylSDtIWBznN+hylRg9XW5ZA YggWviTpyM85k0lOVmFN5XsU/Qx5CUnfzWK1Kqxumki0bu+FvgZk0OL5hTpe5GS4GF5u cQs9aPjNAi0LyVI+5wOerEp+4HKYj4LPiXyus1kCli3koADl+npr5AUGK1hEak9MgkqH zyQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :dkim-signature; bh=AmBYu3mpTxz55oEbZdrXdPhOFuVVUVpBKAkDMjhC+bk=; b=KdItfCuANLDVnYg0qOmjsGl1QALy/hpFHlzKmdIPl0fkLJJuSZDWkrzcDbeeiiqfZJ p/rf065cUhH1buYE0qz4kxURrR4EYH/ss0PoI89DiM2/efJdQm8mIYOtt0yMLt+ZVqgH iYIShToGEdqbJTJonNpUE/j3csV55vtxnoEyEjB1Lmv37XJUZ/hPi7lf5Uu2GJ4Nbt3R NEri6iGJ6OuvY1Bob08BbUfFL9gzwVSTz0ivTMShS//azHkoz1wXIogQ2mcK+zj4O7G/ JzU10Jn2WYWxsP07NOr+s57IL1kpDbo8URi3JfIG0ucCpp8iZ0yd1FwYT9kLZ7E9HMEs PjnQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=ZnvNzleU; spf=pass (google.com: best guess record for domain of linux-ext4-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z26si8661404oid.247.2020.02.18.18.23.06; Tue, 18 Feb 2020 18:23:22 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-ext4-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=ZnvNzleU; spf=pass (google.com: best guess record for domain of linux-ext4-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726761AbgBSCXC (ORCPT + 99 others); Tue, 18 Feb 2020 21:23:02 -0500 Received: from bombadil.infradead.org ([198.137.202.133]:46908 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726735AbgBSCXB (ORCPT ); Tue, 18 Feb 2020 21:23:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.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=AmBYu3mpTxz55oEbZdrXdPhOFuVVUVpBKAkDMjhC+bk=; b=ZnvNzleUFxBP7YT/XJ7y0Rz/bu VkddBEMMXKNPUEPIHNmeV0img3eiMCgmTDLWhnmF0LgRkhumSClEFtJ8h9QNQ1gTWJ7cQ7oYl5y2T LQq1+MXm3VWWly+rUeCiBOlqF7kPYFOalIjZFbqYzu76qbt0PLrQYATKJKLlxP1jWBvgL8vVEl1oK PZK3QLY1XvI1RwzN3cfFLeaib3/PQmj6eNOnYQSQu+wNZ3jLp3NgdPPwpBmDQq/4dju6xWjfr9B1l Je53RqtXvIb3d5xbLSBBBArNi+TgTTRpln+YO9xoRn4KQfP+zLPQhoOJyXxsL0Z4nCcXJHdASLsqc D4fDP3AQ==; Received: from willy by bombadil.infradead.org with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1j4F0v-0003R5-2P; Wed, 19 Feb 2020 02:23:01 +0000 Date: Tue, 18 Feb 2020 18:23:00 -0800 From: Matthew Wilcox To: John Hubbard Cc: linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-erofs@lists.ozlabs.org, linux-ext4@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, cluster-devel@redhat.com, ocfs2-devel@oss.oracle.com, linux-xfs@vger.kernel.org Subject: Re: [PATCH v6 09/19] mm: Add page_cache_readahead_limit Message-ID: <20200219022300.GJ24185@bombadil.infradead.org> References: <20200217184613.19668-1-willy@infradead.org> <20200217184613.19668-16-willy@infradead.org> <1263603d-f446-c447-2eac-697d105fa76c@nvidia.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263603d-f446-c447-2eac-697d105fa76c@nvidia.com> Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org On Tue, Feb 18, 2020 at 05:32:31PM -0800, John Hubbard wrote: > > + page_cache_readahead_limit(inode->i_mapping, NULL, > > + index, LONG_MAX, num_ra_pages, 0); > > > LONG_MAX seems bold at first, but then again I can't think of anything smaller > that makes any sense, and the previous code didn't have a limit either...OK. Probably worth looking at Dave's review of this and what we've just negotiated on the other subthread ... LONG_MAX is gone. > I also wondered about the NULL file parameter, and wonder if we're stripping out > information that is needed for authentication, given that that's what the newly > written kerneldoc says the "file" arg is for. But it seems that if we're this > deep in the fs code's read routines, file system authentication has long since > been addressed. The authentication is for network filesystems. Local filesystems generally don't use the 'file' parameter, and since we're going to be calling back into the filesystem's own readahead routine, we know it's not needed. > Any actually I don't yet (still working through the patches) see any authentication, > so maybe that parameter will turn out to be unnecessary. > > Anyway, It's nice to see this factored out into a single routine. I'm kind of thinking about pushing the rac in the other direction too, so page_cache_readahead_unlimited(rac, nr_to_read, lookahead_size). > > +/** > > + * page_cache_readahead_limit - Start readahead beyond a file's i_size. > > > Maybe: > > "Start readahead to a caller-specified end point" ? > > (It's only *potentially* beyond files's i_size.) My current tree has: * page_cache_readahead_exceed - Start unchecked readahead. > > + * @mapping: File address space. > > + * @file: This instance of the open file; used for authentication. > > + * @offset: First page index to read. > > + * @end_index: The maximum page index to read. > > + * @nr_to_read: The number of pages to read. > > > How about: > > "The number of pages to read, as long as end_index is not exceeded." API change makes this irrelevant ;-) > > + * @lookahead_size: Where to start the next readahead. > > Pre-existing, but...it's hard to understand how a size is "where to start". > Should we rename this arg? It should probably be lookahead_count. > > + * > > + * This function is for filesystems to call when they want to start > > + * readahead potentially beyond a file's stated i_size. If you want > > + * to start readahead on a normal file, you probably want to call > > + * page_cache_async_readahead() or page_cache_sync_readahead() instead. > > + * > > + * Context: File is referenced by caller. Mutexes may be held by caller. > > + * May sleep, but will not reenter filesystem to reclaim memory. > > In fact, can we say "must not reenter filesystem"? I think it depends which side of the API you're looking at which wording you prefer ;-)