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 ADADDC352A1 for ; Tue, 6 Dec 2022 20:50:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 187CF8E0003; Tue, 6 Dec 2022 15:50:01 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 138058E0001; Tue, 6 Dec 2022 15:50:01 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F41828E0003; Tue, 6 Dec 2022 15:50:00 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id DFD278E0001 for ; Tue, 6 Dec 2022 15:50:00 -0500 (EST) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 87430AB48F for ; Tue, 6 Dec 2022 20:50:00 +0000 (UTC) X-FDA: 80213073360.22.D85C3AC Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf11.hostedemail.com (Postfix) with ESMTP id 8F8EC4000D for ; Tue, 6 Dec 2022 20:49:59 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=pFvMCi6t; spf=none (imf11.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1670359800; 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=GqYeEdRDIKDtP3Dh80e8LwPs1x4Mm1fuIZpe+mpsqUo=; b=6Eh48DQVIyz/niecmPGPVThB18OAxvo78mMKdQJv8Yr0TGEwgMZSsSrzh2R1+oLEhOwZnm NmROvpycGuRw4DC0f/0K2tWjuhI/MCX3nqtW3NyUX+7xJOsdQoVT+/h7zvnmroNvH4znP0 wX6Rc3K1iJZSCEC3ADH4iRHKgluG0DI= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=pFvMCi6t; spf=none (imf11.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1670359800; a=rsa-sha256; cv=none; b=1J7Su/wdXOC4GFUQceSGoKWAFrTtQbLj1ZRWl0i/SP66ui8SMblaoeirileP1W9kcDrKmw wvvT+YbofUKnXgdvWddE5r/Xr0ciwna+ktfAEIlJeBsP1etIW7+ovVdgYMjxSlF4UazPzN BLLipLhR6ZAPRnqQ0Oz0F/28PnJHEg0= 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=GqYeEdRDIKDtP3Dh80e8LwPs1x4Mm1fuIZpe+mpsqUo=; b=pFvMCi6tmMv7Df3dHJpArkuvrS NwU5N4UYVTvX97KS2MivBzmbmL/bKB0UXqgc22Oj7YX1Aw0TgdjMyfsfclWi3qeCGc3zaIvxE3Nfq 7jaybLs+3ug/gLuc+ZTvBkZLus9FV3l7eN9+SwWYwVv1xgMPD813u/zFzV4Y6aNVkuyOZqS90Umvo pT6bcotK9JEt+kiM/uIdS/6/+vZMna8KD6YNaOaH2wLVDq7fd/62WSRvwL6f3r2rWXzti382wnM1T dTybBbZTe9mYcbaGxdkIT/3cQAtFaa8st7fMHXdBou1CPgZvz1m1ZEQA1jNlHfvMIyWJiBYpFCd+t bZS9+H/w==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1p2et8-004o0f-9T; Tue, 06 Dec 2022 20:50:02 +0000 Date: Tue, 6 Dec 2022 20:50:02 +0000 From: Matthew Wilcox To: "Vishal Moola (Oracle)" Cc: linux-mm@kvack.org, tytso@mit.edu, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, akpm@linux-foundation.org Subject: Re: [PATCH mm-unstable] ext4: Convert mext_page_double_lock() to mext_folio_double_lock() Message-ID: References: <20221206204115.35258-1-vishal.moola@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20221206204115.35258-1-vishal.moola@gmail.com> X-Stat-Signature: p4hzbqzaaysipo3as4x6kcsernzooetd X-Rspam-User: X-Spamd-Result: default: False [-2.90 / 9.00]; BAYES_HAM(-5.20)[98.21%]; SUSPICIOUS_RECIPS(1.50)[]; SUBJECT_HAS_UNDERSCORES(1.00)[]; R_DKIM_ALLOW(-0.20)[infradead.org:s=casper.20170209]; MIME_GOOD(-0.10)[text/plain]; RCVD_NO_TLS_LAST(0.10)[]; R_SPF_NA(0.00)[no SPF record]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; ARC_SIGNED(0.00)[hostedemail.com:s=arc-20220608:i=1]; RCVD_COUNT_TWO(0.00)[2]; DKIM_TRACE(0.00)[infradead.org:+]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCPT_COUNT_FIVE(0.00)[6]; FROM_HAS_DN(0.00)[]; MID_RHS_MATCH_FROMTLD(0.00)[]; TO_DN_SOME(0.00)[]; DMARC_NA(0.00)[infradead.org]; TAGGED_RCPT(0.00)[]; ARC_NA(0.00)[] X-Rspamd-Queue-Id: 8F8EC4000D X-Rspamd-Server: rspam06 X-HE-Tag: 1670359799-730377 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, Dec 06, 2022 at 12:41:15PM -0800, Vishal Moola (Oracle) wrote: > Converts mext_page_double_lock() to use folios. This change saves > 146 bytes of kernel text and removes 3 calls to compound_head(). I think it actually removes more than three ... > flags = memalloc_nofs_save(); > - page[0] = grab_cache_page_write_begin(mapping[0], index1); > - if (!page[0]) { > + folio[0] = __filemap_get_folio(mapping[0], index1, fgp_flags, > + mapping_gfp_mask(mapping[0])); one > + if (!folio[0]) { > memalloc_nofs_restore(flags); > return -ENOMEM; > } > > - page[1] = grab_cache_page_write_begin(mapping[1], index2); > + folio[1] = __filemap_get_folio(mapping[1], index2, fgp_flags, > + mapping_gfp_mask(mapping[1])); two > memalloc_nofs_restore(flags); > - if (!page[1]) { > - unlock_page(page[0]); > - put_page(page[0]); > + if (!folio[1]) { > + folio_unlock(folio[0]); > + folio_put(folio[0]); four > return -ENOMEM; > } > /* > - * grab_cache_page_write_begin() may not wait on page's writeback if > + * __filemap_get_folio() may not wait on folio's writeback if > * BDI not demand that. But it is reasonable to be very conservative > - * here and explicitly wait on page's writeback > + * here and explicitly wait on folio's writeback > */ > - wait_on_page_writeback(page[0]); > - wait_on_page_writeback(page[1]); > + folio_wait_writeback(folio[0]); > + folio_wait_writeback(folio[1]); six > if (inode1 > inode2) > - swap(page[0], page[1]); > + swap(folio[0], folio[1]); > > return 0; > } > @@ -252,7 +255,6 @@ move_extent_per_page(struct file *o_filp, struct inode *donor_inode, > int block_len_in_page, int unwritten, int *err) > { > struct inode *orig_inode = file_inode(o_filp); > - struct page *pagep[2] = {NULL, NULL}; > struct folio *folio[2] = {NULL, NULL}; > handle_t *handle; > ext4_lblk_t orig_blk_offset, donor_blk_offset; > @@ -303,8 +305,8 @@ move_extent_per_page(struct file *o_filp, struct inode *donor_inode, > > replaced_size = data_size; > > - *err = mext_page_double_lock(orig_inode, donor_inode, orig_page_offset, > - donor_page_offset, pagep); > + *err = mext_folio_double_lock(orig_inode, donor_inode, orig_page_offset, > + donor_page_offset, folio); > if (unlikely(*err < 0)) > goto stop_journal; > /* > @@ -314,8 +316,6 @@ move_extent_per_page(struct file *o_filp, struct inode *donor_inode, > * hold page's lock, if it is still the case data copy is not > * necessary, just swap data blocks between orig and donor. > */ > - folio[0] = page_folio(pagep[0]); > - folio[1] = page_folio(pagep[1]); eight. Three are inline, which makes sense for the 146 bytes, but we're also removing out of line calls as well as the inline calls. Anyway, whether the description is updated or not, this looks good to me. Reviewed-by: Matthew Wilcox (Oracle)