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 A5FA4C48260 for ; Tue, 13 Feb 2024 16:30:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 349098D0014; Tue, 13 Feb 2024 11:30:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 2F8C38D000E; Tue, 13 Feb 2024 11:30:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1E8C58D0014; Tue, 13 Feb 2024 11:30:45 -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 098AA8D000E for ; Tue, 13 Feb 2024 11:30:45 -0500 (EST) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id AC203A140A for ; Tue, 13 Feb 2024 16:30:44 +0000 (UTC) X-FDA: 81787319208.05.2E4B046 Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf24.hostedemail.com (Postfix) with ESMTP id 5463C180031 for ; Tue, 13 Feb 2024 16:30:41 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=YskmkGD7; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf24.hostedemail.com: domain of djwong@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=djwong@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1707841842; 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=ZsE7+DsFrbQwgwKiVaHbJvXREuRzc9ts/GJiy5juUlc=; b=1/xz06pnYxTeGw/tEBc5r/KwkPFlsiDCCZgVweOHy+Cbdr38WZD2BakZGjOWoJwP26z9cc VtKyW63lAMbDyweLcEjMDeOhW5Flfhii1mTk0RirrJZNER/DRDRYK3RGtXXbGWrzq6K2+h W4C305tATk3Vfv+SQMM7xvJgVlBDkwE= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=YskmkGD7; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf24.hostedemail.com: domain of djwong@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=djwong@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1707841842; a=rsa-sha256; cv=none; b=HL9s4JO4ldt4zkYHdcEDiIVkgp5YTaQ+YMoLjuCAppf1/eNFzpPZCC1usd0B+Ung/RnTjX gkZRRoCCgK0FjyL/REGxb7a+fSkIBrR/a8YTgLAbjwgKfoXfOV6hk3nJ+82wPMeoHdgfI4 yc2H2UQc6r6zYxR3YRvhkFRn0NS1hAs= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 555FBCE1D20; Tue, 13 Feb 2024 16:30:39 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 85CA5C433C7; Tue, 13 Feb 2024 16:30:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707841838; bh=hMxkyWbU9VziSWd2szBRjdbMM8H6CHlLIrWJd+iY0Yo=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=YskmkGD7Xmy8wrH9BYZ8OAidJ3RZKciXSWaiiJlpmFlBevuKSQxq96FFEABloZzrT mnVmrf7tMi4wB1+qAuP3Ygs6DOqwaePDcHJ05v0hC65Q/p9Uz+eekZrBapEqWU5/8+ hHkRMTJvaFK7rWs3VaKssashfMq4kzsMksFlRrc0yUZd2LdHY4VEqHzxA1KL84j7N4 d7l3lbEuKapaoQNS7IFdMO05XItoZF6o/wpMmJoFVVfpHIftP0lmxY/itQFq2AJDQ4 5+ZLccg8Xw6RKTF2alntVOML74AHDV34irK/Oj0bs4+vyUxwrZl9GpRnAYi3kohV/Y /gGgI1ys/2G2g== Date: Tue, 13 Feb 2024 08:30:37 -0800 From: "Darrick J. Wong" To: "Pankaj Raghav (Samsung)" Cc: linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, mcgrof@kernel.org, gost.dev@samsung.com, akpm@linux-foundation.org, kbusch@kernel.org, chandan.babu@oracle.com, p.raghav@samsung.com, linux-kernel@vger.kernel.org, hare@suse.de, willy@infradead.org, linux-mm@kvack.org, david@fromorbit.com Subject: Re: [RFC v2 10/14] iomap: fix iomap_dio_zero() for fs bs > system page size Message-ID: <20240213163037.GR6184@frogsfrogsfrogs> References: <20240213093713.1753368-1-kernel@pankajraghav.com> <20240213093713.1753368-11-kernel@pankajraghav.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240213093713.1753368-11-kernel@pankajraghav.com> X-Rspamd-Queue-Id: 5463C180031 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: 3jfe6xkfg4q1masu843ek4bu559ogekr X-HE-Tag: 1707841841-939477 X-HE-Meta: U2FsdGVkX1+g3WxiPupy1hJS06D74D5YAxbHhzju6YQUVrb2EJDvJ+yQ36IISmyEl14YZdfTyXP0pZpzG6867o1V781Egtuep7qewAobC//hooeMQSgfOZF+FtGxlbbOyu3q+LEJyYlO9MpZyc261e4i4RqE1oEvZoPGvStpLNu6aGYMWYnbfzoFr8+y680Av6ZTVkiiw/erKpW9GVeIb2DUHbQuQVtnTEhkPVJQ+ZuCUsxwnjskCsDYSYVubx3Y14Vqe5HWN+ZYxsR6fLslsfFpGQ2RnUnRbwkVmxwBgSCtkXzGhqFsPd6Nsb5cRAyfmOAGQ+lFzXcVK02+fR2vIVKjqkaLF1jiAB8cszjZjOJ9X3BzhVU8znM7TdE7lE68JQJq54qGCd2Faw6dHH2A61JDKCLjpoqXLdt96/VuP9e6lgbyAwaswaFtdXCJOouWZhg/z8f3IFJJUVF/3cqVerApUuaohUtwYkdlg03XJSw3bQjf+eAK19O6n88Pv/Eq/kfjIsEaA/KRkKMZuP5K2+75CcsaJ+Vc+fk0+Ep/9npTIKbxqPTyL76bV6RI8bvAHMVCprNrPvle159pDvA7vr1XqMDHAvS5rrdNzw+w68Juls7r8frTQImw6LyNvXuAwxTcEhcOlJ6udHXWBr50ugVKyM47XFMjdagDs3TSiqG9UprCvN8t/Ngvo6rd8ABUipQkVkSjAPrmq3p1KaRkVO7dHxRrnhr9gA146htnmb1cMCu8aDPk8yaFB0fL2UzxAW8eRP25kjO7XSkm7NsTWcIASPURuZWPDFFhqE/a9YvkPqdcHsKK1KtrH2YK2nWuIcHC9UZINjdrBLq3fNSzKF42T4cWNNbm4a3ZcLXi4Hc34s/IsSWWNH2rfctpEJ28bMpq8Uec8PpLl8vJJjGVpcaj/9NJHHOh0w9v6gc75F1tYSX/0agqalrYmLKPGgCUrHD0ft4hjy7w2/O46q0 f8spKbVC lF205tVxqtCI0HDCHEE+3VW0ulePG+hZaEh/MyfT9fTGwOEbzi1OCYvB9f5AGZUUdtQhCHuc1lltnfcsdQstNE5pmAzEjoFnsXT35c/30Fd8MpZz9tFa6zmXbojAz9eg19P1r4FqBXQ7X7qAsE+kH5osWhRU9ztQ13LUZjhYwSleHlywZl9BjVRr0hjgtRX4VxGsZJ3QAZ7ABn6ufJyzGzUQMAKvpn8CWDVJHx9y6EZDMiwGXuleWnxbP8ul5rfMn9+lIUtBgQ2Z/uruvR92eYp8ivxK43hzJgZxY 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 Tue, Feb 13, 2024 at 10:37:09AM +0100, Pankaj Raghav (Samsung) wrote: > From: Pankaj Raghav > > iomap_dio_zero() will pad a fs block with zeroes if the direct IO size > < fs block size. iomap_dio_zero() has an implicit assumption that fs block > size < page_size. This is true for most filesystems at the moment. > > If the block size > page size, this will send the contents of the page > next to zero page(as len > PAGE_SIZE) to the underlying block device, > causing FS corruption. > > iomap is a generic infrastructure and it should not make any assumptions > about the fs block size and the page size of the system. > > Signed-off-by: Pankaj Raghav > --- > fs/iomap/direct-io.c | 13 +++++++++++-- > 1 file changed, 11 insertions(+), 2 deletions(-) > > diff --git a/fs/iomap/direct-io.c b/fs/iomap/direct-io.c > index bcd3f8cf5ea4..04f6c5548136 100644 > --- a/fs/iomap/direct-io.c > +++ b/fs/iomap/direct-io.c > @@ -239,14 +239,23 @@ static void iomap_dio_zero(const struct iomap_iter *iter, struct iomap_dio *dio, > struct page *page = ZERO_PAGE(0); > struct bio *bio; > > - bio = iomap_dio_alloc_bio(iter, dio, 1, REQ_OP_WRITE | REQ_SYNC | REQ_IDLE); > + WARN_ON_ONCE(len > (BIO_MAX_VECS * PAGE_SIZE)); > + > + 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, > GFP_KERNEL); > + > bio->bi_iter.bi_sector = iomap_sector(&iter->iomap, pos); > bio->bi_private = dio; > bio->bi_end_io = iomap_dio_bio_end_io; > > - __bio_add_page(bio, page, len, 0); > + while (len) { > + unsigned int io_len = min_t(unsigned int, len, PAGE_SIZE); What was the result of all that discussion about using the PMD-sized zero-folio the last time this patch was submitted? Did that prove to be unwieldly, or did it require enough extra surgery to become its own series? (The code here looks good to me.) --D > + > + __bio_add_page(bio, page, io_len, 0); > + len -= io_len; > + } > iomap_dio_submit_bio(iter, dio, bio, pos); > } > > -- > 2.43.0 > >