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 1D089C4167B for ; Wed, 6 Dec 2023 09:02:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9A37E6B0099; Wed, 6 Dec 2023 04:02:56 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 954086B009B; Wed, 6 Dec 2023 04:02:56 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7F4A86B009C; Wed, 6 Dec 2023 04:02:56 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 63C796B0099 for ; Wed, 6 Dec 2023 04:02:56 -0500 (EST) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 42518A015A for ; Wed, 6 Dec 2023 09:02:56 +0000 (UTC) X-FDA: 81535803552.11.6B484AA Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf08.hostedemail.com (Postfix) with ESMTP id 97E15160009 for ; Wed, 6 Dec 2023 09:02:52 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b="zdO2H/GF"; dmarc=none; spf=none (imf08.hostedemail.com: domain of BATV+2d31c4bdfe93494595b7+7409+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+2d31c4bdfe93494595b7+7409+infradead.org+hch@bombadil.srs.infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1701853372; 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=ESwEwJpMWsb1q1d00f+KoCLpSfEhMR+fcQ8QnG0nZoY=; b=jBTq4zruOSLi3jI9W8BnB97OCyvn4Ey/U6oiQs5tPHnWaFwQFvt7C/lZz0H2kCzLfW27R/ 911ZmTz241WzGYzWTv8dgvppX/6j8RWfMrphVvTYus3t3Yudu6Hcb5iGJBPwR5sxCgWG58 ZspqdZRyrQtbJUWALW3IfXUlhotewlU= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b="zdO2H/GF"; dmarc=none; spf=none (imf08.hostedemail.com: domain of BATV+2d31c4bdfe93494595b7+7409+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+2d31c4bdfe93494595b7+7409+infradead.org+hch@bombadil.srs.infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1701853372; a=rsa-sha256; cv=none; b=8iQDaDXIJZzhl1Sz/omH6Fesc5MOInmGbublQML+mDHxv2GgX7pvz/kuEh2Mrrorv4Xv2Q YdOlcJH32FIF3f7G4PwMJ9rK+XUmZqcnMbhqwo+WY3NJ1USVQeRUSNYELLZh+V5Dik5wKw tLcihkdt8SScVkuSV4UTh2sEs0klmYc= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; 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=ESwEwJpMWsb1q1d00f+KoCLpSfEhMR+fcQ8QnG0nZoY=; b=zdO2H/GFM5zuA/L5PBl09vu4SX Nj1NPCIO6UpL1CS1ZiK7pZAgkEAouwfOHdWjaB/UIFvNCMcmrJzg3APPhDLPBs5EBJHDMwWrzKYQb YXmIEu+cyobQvPWugKFg1wrytc6fzHyAchYm/YclQc5hNhlB1ejYW+R8HC3rcO0QbfJf4IupBinJb o+Gy9bIuZuAG6iUsl02KdeBjw/2gDvuFrRBxpaGBlugOAhNAcWn79lMAgdFOOf4MKaZvaz1hA7gqT RXkliwsSHWURz6Sp/+N0ZdxyHmni68VHPgNY1K1gj2ixWQQJ7CDTkUboZgKMJM5GlVA+YZxcOIEjZ I8v77+EA==; Received: from hch by bombadil.infradead.org with local (Exim 4.96 #2 (Red Hat Linux)) id 1rAnnn-009VGi-1H; Wed, 06 Dec 2023 09:02:43 +0000 Date: Wed, 6 Dec 2023 01:02:43 -0800 From: Christoph Hellwig To: Dave Chinner Cc: Baokun Li , Jan Kara , linux-mm@kvack.org, linux-ext4@vger.kernel.org, tytso@mit.edu, adilger.kernel@dilger.ca, willy@infradead.org, akpm@linux-foundation.org, ritesh.list@gmail.com, linux-kernel@vger.kernel.org, yi.zhang@huawei.com, yangerkun@huawei.com, yukuai3@huawei.com Subject: Re: [PATCH -RFC 0/2] mm/ext4: avoid data corruption when extending DIO write race with buffered read Message-ID: References: <20231202091432.8349-1-libaokun1@huawei.com> <20231204121120.mpxntey47rluhcfi@quack3> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-Rspamd-Queue-Id: 97E15160009 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: ptzezhsaswqjohigs989mz5artwifjxy X-HE-Tag: 1701853372-260940 X-HE-Meta: U2FsdGVkX18SpNXvWLsp0yGTyEy3p7mTLyiZCoK7rcY8ohuMMAQwWWfeEFhU7pKrVKyOjvzXgNAoXtGQ8wf9L7mhw0f66KNFKam1tmzE/ovPOKFhsJ3YrpIIUkWe6V8xcEpj+Q4VIabwDatrhNB7S7pnHM4+jcB6M0JKSjFrF38Nwjn18MsnZjDSGWcp2sPx/4FOu9LgXOis7QYQZP8tEbR4F874KPucdYGs+MXPBDRK17JdKnZmfyvBYGx2qYnBVuqzNa0SVSeMzuJUoFUoUJR2HXYquzqIZBMjwyF+WzXMXPycJfJVkXbnGTSOq3CR5dR/8LczmOYOuol9pg+daL3D3x9HqHd0z/kPsWfigseuhm27wzYAuDjgDT4CuWTybzhUQPKD/cz5wt2+THsJG3PutPUHokRquavHzqLfpg/8ihTGN1+Thof7U+jPbnBP2o8Jr4UlPaoZKmjbE8gBOpJQAeI930wA6703vRmkwQUUCfWtDZYge8XlPiFjDkvsfDgOPFpbKpZg92RcM5QNI+UZ1nPHdiRAGUB8tlK6ng2J6TAbnj0Dt7FYKr1yem8eKrChP+uzVXTsW0ooSURmzkul6zS89adWP2hr7QIaKgegwaBY/IWb24KMsCZMtlxJWXXpEVaJCS4ERYsLz9PD/OHm4TL4G+feW0PkF8/6QnSo5H/BicF9UGjjk989PeRylxB3mBTeMGUfVnA40bTgwVAJFm9gKFl97qGntzNq5C+EZL2GKAb06Y4EbW8IaH9J46RDqP9YmKehXAhX5FTr3JY/uDVhpvHyLB5PBNGX/m+Ofg8nIesP2YDfdDgkOqf9ztGyaNBRO9J/ybsGNEvYrQdZjqbqzWKOHfTmior1EhF9Hwr8d7SoJdFlDKYx+z/oa/M5RJq0DTOATqBZsBS0dxqKq0MBWmiscb/FgVgHbyPY4VbtNt4fOHGK69BcMGmM9I3qr5A6bIynT69HP27 hqTUtv/N NdOtVP8RiAVpT2z3okpE4f2doZFmx9T2Ym/q0oUSOpQTxVPHQrRzUFDm8lZ7f4X+0PBiwSlKjW33uZhGwKJ4Iw8O5qK6IHdOKoDeGAPG5kH8AsgbSnWaiEkTL+gbrA/+vAyPW4J0SFqbJUakV8F9PayW3iHBkxvftr2k5LXyoQLNd1nvbn3CaJ8FkuSjqTeABEXHZNq7dopizb/H5EeEFCsCkY3vYUplpYJWeZ3GhXX+9MPC+b4CMs0a4hHhlV9XX4Hz1gYEACuiElupeKJUBor5vkGqXtdAH4wOGTmBs34WXi52imXH9U6gRmYhdHyljxIDUrCRH65RqMDnAvYBbH5+YUDZQCfXOobtgDz6VQeOlI7oJPnxOZaalSWxjlX80T1sF+MJz//5aRsboJSwIKKPYw39dHVGNjRw2oEdmDuvVHguCMh8M9lP/orNsB+4hK87dZ4XNZfVs9y0= 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 Wed, Dec 06, 2023 at 07:35:35PM +1100, Dave Chinner wrote: > Mixing overlapping buffered read with direct writes - especially partial block > extending DIO writes - is a recipe for data corruption. It's not a > matter of if, it's a matter of when. > > Fundamentally, when you have overlapping write IO involving DIO, the > result of the overlapping IOs is undefined. One cannot control > submission order, the order that the overlapping IO hit the > media, or completion ordering that might clear flags like unwritten > extents. The only guarantee that we give in this case is that we > won't expose stale data from the disk to the user read. Btw, one thing we could do to kill these races forever is to track if there are any buffered openers for an inode and just fall back to buffered I/O for that case. With that and and inode_dio_wait for when opening for buffered I/O we'd avoid the races an various crazy workarounds entirely. nfs and ocfs2 do (or did, I haven't checked for a while) something like that.