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=-0.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS 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 8C1B4C34031 for ; Wed, 19 Feb 2020 02:23:08 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 4A8A820801 for ; Wed, 19 Feb 2020 02:23:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="ZnvNzleU" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4A8A820801 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id CEB286B0003; Tue, 18 Feb 2020 21:23:07 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C4EBA6B0006; Tue, 18 Feb 2020 21:23:07 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AEFD86B0007; Tue, 18 Feb 2020 21:23:07 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0220.hostedemail.com [216.40.44.220]) by kanga.kvack.org (Postfix) with ESMTP id 938776B0003 for ; Tue, 18 Feb 2020 21:23:07 -0500 (EST) Received: from smtpin23.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 1EAEE180AD81A for ; Wed, 19 Feb 2020 02:23:07 +0000 (UTC) X-FDA: 76505279214.23.shake09_8f93264b9123e X-HE-Tag: shake09_8f93264b9123e X-Filterd-Recvd-Size: 4868 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf47.hostedemail.com (Postfix) with ESMTP for ; Wed, 19 Feb 2020 02:23:06 +0000 (UTC) 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> 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 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 ;-)