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 82336C54798 for ; Tue, 27 Feb 2024 09:33:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 12A6F940018; Tue, 27 Feb 2024 04:33:33 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0B3C7940008; Tue, 27 Feb 2024 04:33:33 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E9770940018; Tue, 27 Feb 2024 04:33:32 -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 D5AF4940008 for ; Tue, 27 Feb 2024 04:33:32 -0500 (EST) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 86C1B1A055D for ; Tue, 27 Feb 2024 09:33:32 +0000 (UTC) X-FDA: 81837071064.11.D99BEEE Received: from mout-p-201.mailbox.org (mout-p-201.mailbox.org [80.241.56.171]) by imf12.hostedemail.com (Postfix) with ESMTP id CAE6D40019 for ; Tue, 27 Feb 2024 09:33:29 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=pankajraghav.com header.s=MBO0001 header.b=GMTPJcrf; dmarc=none; spf=pass (imf12.hostedemail.com: domain of kernel@pankajraghav.com designates 80.241.56.171 as permitted sender) smtp.mailfrom=kernel@pankajraghav.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709026410; 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=50P6BtmSu6TZY3fumWs04okJUU6PUrVTmELjj8/MjQM=; b=t+YkLoXm23QOBdXlVvHXKKn8Bk22dASl+AgXc7qfeMDgX0kxf+Oby58r84HfHRPIkTFmyl kqSRpVLFQC5zxEiQrYO/3CfpQlb5SBaHCJpWWzHaiShYTC45fDxxhVgIP5UTpBx6jg1K8t 9h3riBw0bCzkos3N56XtlstMOVx3zYE= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=pankajraghav.com header.s=MBO0001 header.b=GMTPJcrf; dmarc=none; spf=pass (imf12.hostedemail.com: domain of kernel@pankajraghav.com designates 80.241.56.171 as permitted sender) smtp.mailfrom=kernel@pankajraghav.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709026410; a=rsa-sha256; cv=none; b=R9rbNbgDz2vli+bMsWQ+YLkhHzsl85qkZ4O0QXc2lldGs5/De+wqimtBAqjx7rTJWkGNtE owrrTD3w6e/AuMRvH++r3S9OL1TNnY6mNVS9PEVtELStdHbbNjtBKGQ+Vn5wdl2ubLysWP L+9g1vEfHUjYLo2d2M/i3zjK2uQbT0w= Received: from smtp102.mailbox.org (smtp102.mailbox.org [10.196.197.102]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-201.mailbox.org (Postfix) with ESMTPS id 4TkXNP5Jv6z9smD; Tue, 27 Feb 2024 10:33:25 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pankajraghav.com; s=MBO0001; t=1709026405; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=50P6BtmSu6TZY3fumWs04okJUU6PUrVTmELjj8/MjQM=; b=GMTPJcrfqTMcvvlrwwI/f3bHzERGH6KsPCu9OUPYazsskmeLvpmeO2lKMnMCcfDSSOAL/R dvmZqZmKX3dpt0/QjiDz34yjHWSWM4GA9r3AYl9RpAD3SGErX8Nxkx2bkbWZTV5mIHcmE8 5gXSdvlqZLUCp3JKTKITpHBav6Ci6w6NNuL96JeCu8vQUDzSLs0RN533WXRkPxFnEZFlBr 6spw7PuDKhZl5kqWFsLeXR4kLcSs98VHR4rxMlaeTg/OpZvqxllaR/OfDKv5fiD59OKo60 a6E2UIlHVi6c4Wy5PW8/I/+BcTT4z41Myx2eckvXAhAtwQeMCWJk3mF0tQzk0w== Date: Tue, 27 Feb 2024 10:33:21 +0100 From: "Pankaj Raghav (Samsung)" To: Matthew Wilcox 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 10/13] iomap: fix iomap_dio_zero() for fs bs > system page size Message-ID: <3pqmgrlewo6ctcwakdvbvjqixac5en6irlipe5aiz6vkylfyni@2luhrs36ke5r> References: <20240226094936.2677493-1-kernel@pankajraghav.com> <20240226094936.2677493-11-kernel@pankajraghav.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: CAE6D40019 X-Stat-Signature: qe86o5h5unngig8qbcgmk4p3i6s966bs X-Rspam-User: X-HE-Tag: 1709026409-363262 X-HE-Meta: U2FsdGVkX1+FnaLkhz5sD3ZKn7HThTANobndHCwNhqLeqh5vWEfpF11+i87uB8J7GDn/IXdDJa6DpSsQ12EhQk8d6boNRhPG1UVr5QqdL9NnJMaS4dEJhdqv6vj/+uOcIVarVZ1BLYSz5sk8DlBKhzWQ+53pqqYZj0zjvbx9aBiO6PoIhzE2co7YIvFYDsK4C7LS4jen4cEhpUR1ALokYTDtFpGbz/4n3eSGEdhBKU+wfYhgah1Z55ofP4Mj04LG3wyRKIUoR+sF3pgN7P9EtmyDgEjs+Tdj0fQbBz7YTSjH9SjbJBewx7V637JJ8RZXieoSNcrimL1F7RLOUyZgjsfTD421CxAf5o6vEUiQF8kB002gvp3OqONO3a4loswZFMaDcmv9dO2SOsYKfbZnlgZgE/+CGLhpMc/YMbAfJio8lff+Fh8iuTbRISrVvgiLATZ0g3o1r8y/njRcVXahvqwGNEA1Cn1awFFz0i4qsdI5Z9J4HyOGDsRbQkgg0TfdK2tc2C0nXjWIN+VxFldm6obBGNwap/r0V9ELRvIrS63iJrCDqUvnn2tex4n9refKolZYHIPWllGJuDtqSsM0d521Qj4nBS79HhR5b6STyL3BvDv9eD4mRRKtrfsuwiF+yGC8IIIt74Hv8Ap7VQ3Ef7CT909ryS1W5bzMnhKsoE0PteUlGrAPNYWpLVbT6fhLy3VYsRqXZ4ZcfA6RYKDRFLrjZzh6gsXc3dGFLYoo0KNcagkLF6TGLfFTy2W9a1QjtSaHpuGsXVlhDH0vU1XjDp0tOPSKBqL8la1jeQ3x9ub8y5mpRdnSDzvyJeZHsfM98Eqy81tgVgr72uW/2pebEvCbGNi1tDUjtSYMH/Nuitg+REoYUpYH6ByBilWga/3xfxeegv4U9jQ= 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: > I thought we were going to use the huge_zero_page for this? Yes. We discussed that huge_zero_page might fail, so we concluded that we needed an api that can return arbitrary folio order that will not fail: ``` your point about it possibly failing is correct. so i think we need an api which definitely returns a folio, but it might be of arbitrary order. ``` I couldn't come up with implementing your latter suggestion, so I informed darrick that let's use this patch for now, and add the arbitrary folio order with zero as a later enhancement. If we want to use mm_huge_zero_page, then this should work: diff --git a/fs/iomap/direct-io.c b/fs/iomap/direct-io.c index 04f6c5548136..b6a3f52f48da 100644 --- a/fs/iomap/direct-io.c +++ b/fs/iomap/direct-io.c @@ -237,10 +237,17 @@ static void iomap_dio_zero(const struct iomap_iter *iter, struct iomap_dio *dio, { struct inode *inode = file_inode(dio->iocb->ki_filp); struct page *page = ZERO_PAGE(0); + struct folio *folio = NULL; struct bio *bio; WARN_ON_ONCE(len > (BIO_MAX_VECS * PAGE_SIZE)); + if (len > PAGE_SIZE) { + page = mm_get_huge_zero_page(current->mm); + if (!page) + page = ZERO_PAGE(0); + } + bio = iomap_dio_alloc_bio(iter, dio, BIO_MAX_VECS, REQ_OP_WRITE | REQ_SYNC | REQ_IDLE); fscrypt_set_bio_crypt_ctx(bio, inode, pos >> inode->i_blkbits, @@ -249,13 +256,15 @@ static void iomap_dio_zero(const struct iomap_iter *iter, struct iomap_dio *dio, bio->bi_iter.bi_sector = iomap_sector(&iter->iomap, pos); bio->bi_private = dio; bio->bi_end_io = iomap_dio_bio_end_io; + folio = page_folio(page); while (len) { - unsigned int io_len = min_t(unsigned int, len, PAGE_SIZE); + size_t size = min(len, folio_size(folio)); - __bio_add_page(bio, page, io_len, 0); - len -= io_len; + bio_add_folio_nofail(bio, folio, size, 0); + len -= size; } + iomap_dio_submit_bio(iter, dio, bio, pos); } Let me know if we should go for this or let's keep the original patch and add a ZERO_FOLIO_ORDER API that will not fail and use it as a later enhancement.