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 A57C6C48BF6 for ; Mon, 26 Feb 2024 14:40:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 32FEA440171; Mon, 26 Feb 2024 09:40:58 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 2DFC8440147; Mon, 26 Feb 2024 09:40:58 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1A920440171; Mon, 26 Feb 2024 09:40:58 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 08924440147 for ; Mon, 26 Feb 2024 09:40:58 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id BB2C2120920 for ; Mon, 26 Feb 2024 14:40:57 +0000 (UTC) X-FDA: 81834216954.14.E470403 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf05.hostedemail.com (Postfix) with ESMTP id DCAAD100012 for ; Mon, 26 Feb 2024 14:40:52 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=EZCVljQj; dmarc=none; spf=none (imf05.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1708958454; 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=gauGe8/AuKWwXE/zVAiOKHD6lBDudnyYUkAdQbw+0Q0=; b=cnY/jQJ0irE/WSbF8bFo7bY6HhWL5q83GW7V9L/+2G0bBlGlIcZbgsnSGtH5iOvf6A6t3t KU1VRcGtH5kQtvMQx88AoVUU0dn1uynfDq/z49xhW26D9bEgyrY+EC0CCwrE+9u2qPg3JD KUzrDVIf07CPo3SYkWYxrRuUZrvPzOc= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=EZCVljQj; dmarc=none; spf=none (imf05.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1708958454; a=rsa-sha256; cv=none; b=HRHQaxJHJxLpKkfVbzTKkyMI9D2vp4mwV7/psg4RQTY2S8oWizorYohj58RS1elQ6Bm3R+ WweAjFnr5Rz3pJrat+K4fBLXgcFdh+UZkGnSh9kFodbdl7yBWAJ2YecyFuNrZfpMMmQPie tslko6+Fx7iXg3BvQS3rDIngEDM3g5w= 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=gauGe8/AuKWwXE/zVAiOKHD6lBDudnyYUkAdQbw+0Q0=; b=EZCVljQjaZUEOkxlB+8PNfeRt1 NQviA1U1m56nvCuj1UZ3e4AkjgDnJFn5grtISYLOThlXZv6PlZaXJpjNypivPEdhPh0mVxz25+8Ay opXth4lNOhcTliN3vGJm+HTt8x5Y4NWs0WCYjUVeLzUKY/9vMQnLZt9CPMREiWiuo0PbjUnxdU3gA WvwTOKGtNsMpFEQOVpxCRG+9m2rDsPqcKCq89jMOkBTMMTlR794MeF10UDwtGhwZzUaIisCKzdxRy yTcksGLDQC+gAMQw/TX7Y2Qn3BRd1rIbv607lZ+3BhHITyihcI/MXS5izrfwSc67yA0OcaWulzIhF 3gWCr3Mw==; Received: from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1rec9q-0000000HPeI-0VQI; Mon, 26 Feb 2024 14:40:42 +0000 Date: Mon, 26 Feb 2024 14:40:42 +0000 From: Matthew Wilcox To: "Pankaj Raghav (Samsung)" Cc: linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, david@fromorbit.com, chandan.babu@oracle.com, akpm@linux-foundation.org, mcgrof@kernel.org, ziy@nvidia.com, hare@suse.de, djwong@kernel.org, gost.dev@samsung.com, linux-mm@kvack.org, Pankaj Raghav Subject: Re: [PATCH 03/13] filemap: align the index to mapping_min_order in the page cache Message-ID: References: <20240226094936.2677493-1-kernel@pankajraghav.com> <20240226094936.2677493-4-kernel@pankajraghav.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240226094936.2677493-4-kernel@pankajraghav.com> X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: DCAAD100012 X-Stat-Signature: kkrwk1f8tb1bxa8ag3uhks7id8pay56y X-HE-Tag: 1708958452-251645 X-HE-Meta: U2FsdGVkX18xPbgcIIm7H+qEZvCb8RjuauA+AMseOc7ebqmWX5qc78h/dnr9I98vhm6WtHSIgA7le+SymHKpdzlKkaAhKd0U7e8+vN8NVKuBu97ihsoSec/1kuirY5lJeF4yMYs62QVeuZkrhPEf/0WXUIE+eTfXXfkEfDYfobVrz9W6ml2pYoxRi8DHvOG+rP1n7CruJaqmDO5wsXtIjoy8v6krG4hUy73qhdwTVT/3qimiEwiscd9WvSb4yhhDVKQkwKABf6/Zm5CzdEvvv+np9dg0q++r5wUxgNcB1sgP0rfyfjiX2afWs8cXWuCadE8KmAbMIe9iKGpGzGwEaBIgylDXqTZrmoU1flSad6/MO72Vs8RW2jju0Uxzwzgd3R2KJwOTG+VcV/OfoutOGyWAZ4h9X2v2kJ7uRJL0fcmqQAVbD+NyVDgjwNJoKZWZV5KREu55vShb2uZFx3mFUOeYN1nM5GnWXSRLSsbSoD5YGL8p1DIjfFk4xnhdFomHwjxaX756iXj+y4jTaRHPsoUyYTJDrS1hqVlhejmvFSDwrVIVkadgxIFT+wmZXGjLzdn8YNYPGn5IJxWtZSi5+YOoLqW1rcQFtlmWHxIDpd0eMUDxneZ1R3a7WVRzvp+uxHpAwKeLWCwmcIPV29iUp0YabVbGVfj4/19pZdqDMb0SLCs5eKVwxflPeJcrn7E6BX1JGZf0/3MZS+EN9ru5Ok6tVTO89e0H1HCZAonBb0Vo4leF0DoBmytEBzZGJsLEtKyXEK5CWRz8eugNIqi1soaruJIJhnNuR6ASoOoHV+MND+o/uRePU/PPRrz1rhwDOfodDpJ/kTbt55uMlzwS3V23nSToOsdP54KdyNF5KkK9N2u0C1TWQ6stN5vRWHQz 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: List-Subscribe: List-Unsubscribe: On Mon, Feb 26, 2024 at 10:49:26AM +0100, Pankaj Raghav (Samsung) wrote: > From: Luis Chamberlain > > Supporting mapping_min_order implies that we guarantee each folio in the > page cache has at least an order of mapping_min_order. So when adding new > folios to the page cache we must ensure the index used is aligned to the > mapping_min_order as the page cache requires the index to be aligned to > the order of the folio. This seems like a remarkably complicated way of achieving: diff --git a/mm/filemap.c b/mm/filemap.c index 5603ced05fb7..36105dad4440 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -2427,9 +2427,11 @@ static int filemap_update_page(struct kiocb *iocb, } static int filemap_create_folio(struct file *file, - struct address_space *mapping, pgoff_t index, + struct address_space *mapping, loff_t pos, struct folio_batch *fbatch) { + pgoff_t index; + unsigned int min_order; struct folio *folio; int error; @@ -2451,6 +2453,8 @@ static int filemap_create_folio(struct file *file, * well to keep locking rules simple. */ filemap_invalidate_lock_shared(mapping); + min_order = mapping_min_folio_order(mapping); + index = (pos >> (min_order + PAGE_SHIFT)) << min_order; error = filemap_add_folio(mapping, folio, index, mapping_gfp_constraint(mapping, GFP_KERNEL)); if (error == -EEXIST) @@ -2511,8 +2515,7 @@ static int filemap_get_pages(struct kiocb *iocb, size_t count, if (!folio_batch_count(fbatch)) { if (iocb->ki_flags & (IOCB_NOWAIT | IOCB_WAITQ)) return -EAGAIN; - err = filemap_create_folio(filp, mapping, - iocb->ki_pos >> PAGE_SHIFT, fbatch); + err = filemap_create_folio(filp, mapping, iocb->ki_pos, fbatch); if (err == AOP_TRUNCATED_PAGE) goto retry; return err;