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 EDFD7C19F4F for ; Wed, 8 May 2024 11:20:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6F3E36B0088; Wed, 8 May 2024 07:20:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6A3C56B0134; Wed, 8 May 2024 07:20:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 592436B009B; Wed, 8 May 2024 07:20:20 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 3CCA06B0134 for ; Wed, 8 May 2024 07:20:20 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id E5E891209D6 for ; Wed, 8 May 2024 11:20:19 +0000 (UTC) X-FDA: 82094984958.16.961F15F Received: from mout-p-202.mailbox.org (mout-p-202.mailbox.org [80.241.56.172]) by imf07.hostedemail.com (Postfix) with ESMTP id 078EB40004 for ; Wed, 8 May 2024 11:20:17 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=pankajraghav.com header.s=MBO0001 header.b=kwhWSZcq; spf=pass (imf07.hostedemail.com: domain of kernel@pankajraghav.com designates 80.241.56.172 as permitted sender) smtp.mailfrom=kernel@pankajraghav.com; dmarc=pass (policy=quarantine) header.from=pankajraghav.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1715167218; 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=Y1un4/swOYqLsaMeeUpem8iiB/EUo0Jbdf4dJTwbApE=; b=IlrxmhVJUdVvCUw5E6gmGl2qc0X2/kUpkMgnbFQSQ9WjwUSXdlqSnKynV6EIzCaGbq+Dcp Dru526hYOSqRJNFg9MNAU0o3PVZ5DDxZl3JcJrdc+5JA6iArxSQ0dD0Ii6nZ9sB0H4z1fo E432NjDhFP9UAyizWqHNlHRP8J8VUqk= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=pankajraghav.com header.s=MBO0001 header.b=kwhWSZcq; spf=pass (imf07.hostedemail.com: domain of kernel@pankajraghav.com designates 80.241.56.172 as permitted sender) smtp.mailfrom=kernel@pankajraghav.com; dmarc=pass (policy=quarantine) header.from=pankajraghav.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1715167218; a=rsa-sha256; cv=none; b=aF3r0lyoT72wKG+YM2+ZYFxH6zIEaKtkkUTiOaYhCQPLoXljx2CCPWpYBqRyN3xa/tSb1t ZYz61AyD3QzG/JSuIysv/pHdGnjODuN4+81zJEAyHBI7/ZicQY6pXNqM3ALpzbIXHHfNUE 0URuQ/yGiLw8pWmAedMPcXRSA7G/6lU= Received: from smtp202.mailbox.org (smtp202.mailbox.org [10.196.197.202]) (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-202.mailbox.org (Postfix) with ESMTPS id 4VZCNr6w5lz9sQg; Wed, 8 May 2024 13:20:12 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pankajraghav.com; s=MBO0001; t=1715167213; 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=Y1un4/swOYqLsaMeeUpem8iiB/EUo0Jbdf4dJTwbApE=; b=kwhWSZcqfxeUqy4w1ehrBrcL7c7QvNY6vH49D8wxGPTQs4HDilQDAovRKcID5Le1IApaTr I1h2y6zMSnT83BwIhGl53JK2STiGOp5vW3tgBVnbl/xxLX3FwAi554PQUW+jvAlVhTJ8s7 PRRLTseJatMAldsJZbEkba59lcCay+0jzb9uQwi+e/mVEhkcxv14GmiFmrlb/7Y7Yo+Uaq sDGXNl9aREvM4AXSmkm5Vv3Mxp/IgBTM/vo9Ly2W0zmwWNxinNQDIepQWvNdf/CIH9f/Rn 2L6oCVWyobMBGqG24+1bNOaZ9uQftwbST42yyRV3bzFqoFifLmTXnxxyUxk4Hg== Date: Wed, 8 May 2024 11:20:05 +0000 From: "Pankaj Raghav (Samsung)" To: Matthew Wilcox Cc: Luis Chamberlain , akpm@linux-foundation.org, djwong@kernel.org, brauner@kernel.org, david@fromorbit.com, chandan.babu@oracle.com, hare@suse.de, ritesh.list@gmail.com, john.g.garry@oracle.com, ziy@nvidia.com, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-mm@kvack.org, linux-block@vger.kernel.org, gost.dev@samsung.com, p.raghav@samsung.com Subject: Re: [PATCH v5 07/11] iomap: fix iomap_dio_zero() for fs bs > system page size Message-ID: <20240508112005.4zhxgcre73omr37s@quentin> References: <20240503095353.3798063-1-mcgrof@kernel.org> <20240503095353.3798063-8-mcgrof@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspam-User: X-Rspamd-Queue-Id: 078EB40004 X-Rspamd-Server: rspam06 X-Stat-Signature: hi1budqcjfsdpmh8dx16dkrra7esnuqf X-HE-Tag: 1715167217-737907 X-HE-Meta: U2FsdGVkX1/4HlxdIhK9Muum5ochRqO+YTYDwwfXrs88oGPF555LbdzGYjO76aPlka0O24pz2klviV9fqFU0FbLMhvsaeR0JTvKt+XoI/JwIJXbY25xkiiLLLjR09Qe73PHY9a4SgPse7yRk6bb2Qr/jOrrNUfRT0TlMv1MtdDfuy0dGS1yC43iQq4cYz6U8O4fsfo7T072Vk0kexmt12FdFjyRa3WH1rtjKSyOcRdBpRDqa1AcWeYrXMCOW3OtD8+B7xLDN9XS0BEwOd37XG5BRwx1Xr9ymwrsSS9JJ+xHW4Hp0O/uj5tHiOzbNZjxHxyCdJEepFh1n3hkzsKdtWbCbSb7KV5LEelKH3YM/6IehEIV7URa27y+l7/Xcxm3bO+zsr8G3SXaDnS62SqZVZ/GkdVqx6t7VI/g24TGGDFlCfGHvcq8SAxzdYMNngmS0IOT9Vme0/4s3NgM2Ux02YTzQBM+DuCmGu2xrElbf6lzT4K5mqciInBISMfVWbJkjxq5RmtYrt9P7AFAjN3dkVXfFjbAq14wYFAw+otHdG/5ZjCl1H7foow0W2tE+WioLV1jQyB7BSlYyuDvvIOr9aGOD0Sb6SRRc1+0r2IXL0wiwmKCFPp1mcQXhCWCz3Rf2hj8KjHYFdd6JSUvqaemmLuAfBc9o+K9FoRTdsZOOZBRe1LRgUa5m0oBgOqM+6c6eUya+HKA51G0ZDRhMDbAvJnNzkoA4Cn8KqgSscomQGqJ67o5DmWwRBVVmViOR5OSWYd3eTWbHBRHgkA71fhfu2QfXZB1ozcL9LS4lD2tjE61n7kW8ieY/UIWvL6ezqmBohR86LFi5UzIAf17hGrQMd84GtBx2Pa8Xlhygf+yseXVJqUY32YbnKwNrR/b/XEIM3wQR6sxE10ttTSkVq4VBE2iBYt3AizPCtSV02Y5kc0PVNXvS36iL1no9QSRsL5iT+t9JlweeTT23eWZJPwr /2vEzG1K BqnN1U2i/ZYlRr/TRydOmrmxnZ37irJPY+1rih3wpyuAqezPM9ddW00qtGHMn9edpbUHAPn8QwdlmEDnbyq2kgUh/mqvVUgOxc6IuG8LkvP7sQibH0S8OaGcEGbngFmpiqqiyGnOMTFeitr0CxMvjV/Qnltu1qCOKxuVCDrQbJEzyj0r00UsBTtM2VfktIax2eOYdaEKghVqvtqyA/U/VWTWgLysPcfdhipwzHOiSCuNOODCqIt56WZPab3Uxhw3lMAK0hVlsQaIlVkngLS/Rm630ODlM62roit2ZnZ8vtdoMSoo= 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, May 07, 2024 at 05:00:28PM +0100, Matthew Wilcox wrote: > On Fri, May 03, 2024 at 02:53:49AM -0700, Luis Chamberlain wrote: > > + 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); > > + > > + __bio_add_page(bio, page, io_len, 0); > > + len -= io_len; > > + } > > iomap_dio_submit_bio(iter, dio, bio, pos); > > If the len is more than PAGE_SIZE * BIO_MAX_VECS, __bio_add_page() > will fail silently. I hate this interface. I added a WARN_ON_ONCE() at the start of the function so that it does not silently fail: WARN_ON_ONCE(len > (BIO_MAX_VECS * PAGE_SIZE)); This function is used to do only sub block zeroing, and I don't think we will cross 1MB block size in the forseeable future, and even if we do, we have this to warn us about so that it can be changed? > > You should be doing something like ... > > while (len) { > unsigned int io_len = min_t(unsigned int, len, PAGE_SIZE); > > while (!bio || bio_add_page() < io_len) { > if (bio) > iomap_dio_submit_bio(iter, dio, bio, pos); > 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); > } > } -- Pankaj Raghav