Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp1430993ybv; Thu, 20 Feb 2020 20:21:13 -0800 (PST) X-Google-Smtp-Source: APXvYqwJNr+3arW17UiniGBpnx29MJCjdfmKYaSZWbIimcwam1uSfxipVcUQpyqX2l5/PplmZ5PY X-Received: by 2002:a05:6830:22e2:: with SMTP id t2mr27035510otc.129.1582258873751; Thu, 20 Feb 2020 20:21:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582258873; cv=none; d=google.com; s=arc-20160816; b=Z0ZnowOLZw+u1qqxkQXiyCD+2pHQQirsvMRlZeg4Mz/sQSTMG3NMphzyzCYjn4SruG 6H7olmHtd2bpsI1ScW8yJt1RAGS0fCB3ICmODjwouCWnUkI4/1qlw06IzRALIgIeasyN auJHS1SH9keGNFXGLzK/o319xubJVFatcklrMopYWxhLaJbnnLRIF+snYc0muKid2y6c okHjv3rNisjASZ8fMzmp1yL2nzE0nIy8ThBOgT+BpmwZIpdpKwddN2edWlP2kC2CciEL YvxpMdWpSPjbeXUMUUH5QYGuLeok2BRztOkL0JvXka4u6dELyi3Eiw8jKORi043CJbFY xwVg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:to:in-reply-to:cc:references:message-id :date:subject:mime-version:from:content-transfer-encoding :dkim-signature; bh=jR+bcPiDsug87G22T3m75d03tbxYdln+pR8aYjajd+4=; b=frbLFFjQal0DWieWO9kmUCj8gawmsH2MKaYVA8dTJcUviNNGeO8D4DzyjKb4WPM+J7 RIGYyB9eR3pLInbB7DBGwoRYFd46gT3MJWKA/KOdZ/4fWi82/s+geq1Uin13tNE7sjHz hj8Fxf+Ett0PWG7SHjNk7VsOiQ7Qngf3GJ9MyHDbcjZIqk8s1Os3XnEE5T+fWcd3jHTT ZMwibT0u+4LHD6hrq3wEcmkqErHuwGVwAnxyD0HMeIM3UXqJklsRLZNC6dZSUjuv0wGd LnhVYB4H5ePEUky57j9M7A4Lc+dyJY0pvlCh7k4VeIB789J5n9A7HntmnY1vfMueHp17 FG0Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@lca.pw header.s=google header.b=DMUfLkmo; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i13si796911otc.228.2020.02.20.20.21.01; Thu, 20 Feb 2020 20:21:13 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@lca.pw header.s=google header.b=DMUfLkmo; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729608AbgBUETl (ORCPT + 99 others); Thu, 20 Feb 2020 23:19:41 -0500 Received: from mail-qt1-f194.google.com ([209.85.160.194]:43680 "EHLO mail-qt1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729535AbgBUETl (ORCPT ); Thu, 20 Feb 2020 23:19:41 -0500 Received: by mail-qt1-f194.google.com with SMTP id g21so394707qtq.10 for ; Thu, 20 Feb 2020 20:19:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lca.pw; s=google; h=content-transfer-encoding:from:mime-version:subject:date:message-id :references:cc:in-reply-to:to; bh=jR+bcPiDsug87G22T3m75d03tbxYdln+pR8aYjajd+4=; b=DMUfLkmoWwY7Oen9tGr4KystEUnaEeq09VO0b6IloNA1i4L1y4z5QiBty8yLLiJl+z yNUHWlktuMullZOs5k5Tq7xYy7cEs1b2JSdOmpwEzRShPGl2qOwdCkTwJzIBSO3Lwk0l 22p6zc3l/5yEZXnL6+yJ+Wdp6GRQ9rC3m615Re8S7WyyRvTa5TUxatNwR05kSZDgn4T0 iMcSnYCkkWgu16yoJJCkL6Pnw6XY/HMsXu4vJ2tuo2AIOiFoYWIdexFCOMQ6G92sqswf /Hb4v9ObkoFPMM+J2Z9p3m7Rc4BzoeC+Ej8jxvzhHUTCXPxn0wG+7gLOfjQKSerueQyu SiXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:content-transfer-encoding:from:mime-version :subject:date:message-id:references:cc:in-reply-to:to; bh=jR+bcPiDsug87G22T3m75d03tbxYdln+pR8aYjajd+4=; b=AGMEYD4yxCrIPIr2AGHGMUZFsddNsSvRVzD6QV6dNxoz1/6kR1jkmsf1hYgm8ksQnZ kgJ953dWwFBUF015JTYoOI1C+fjvR2eHy2E+OcXP6/IMFrEMUN6KE5qOzRxVY8lITj/q LXk5NOBpkL+u37bHgj5L7m/VFu2yDcNCTpdBuNZEMB+wMi3DrTw3NV6kj3Li252mtm37 86kmzGJf9mJ7UEa9zZrNYw2FUuCkmtcAL45Zgeef1fP+jqP8p0nc4OLP/EADYUR1ftc+ Z6V3rilNLS4NAaK4IHUxGYrvH7aEOhcLBmNFujerfAXPl4jBtY3X4q1eW0QOT0tV0lga KmKg== X-Gm-Message-State: APjAAAXjImzsM+vs/nP0hdvVo4+SasFjOfISczQb28SQpKHKaLyApWz7 R1GlixntDAs046yz8bXtEel/kw== X-Received: by 2002:aed:2d67:: with SMTP id h94mr29295311qtd.74.1582258780516; Thu, 20 Feb 2020 20:19:40 -0800 (PST) Received: from [192.168.1.183] (pool-71-184-117-43.bstnma.fios.verizon.net. [71.184.117.43]) by smtp.gmail.com with ESMTPSA id y91sm975458qtd.13.2020.02.20.20.19.39 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 20 Feb 2020 20:19:39 -0800 (PST) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit From: Qian Cai Mime-Version: 1.0 (1.0) Subject: Re: [PATCH] fs: fix a data race in i_size_write/i_size_read Date: Thu, 20 Feb 2020 23:19:39 -0500 Message-Id: <7351A815-AA56-45FC-B15F-38F81F140253@lca.pw> References: Cc: Al Viro , Christoph Hellwig , "Darrick J. Wong" , linux-xfs@vger.kernel.org, linux-fsdevel , LKML In-Reply-To: To: Marco Elver X-Mailer: iPhone Mail (17D50) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > On Feb 19, 2020, at 4:21 AM, Marco Elver wrote: > > Let's assume the WRITE_ONCE can be dropped. > > The load is a different story. While load tearing may not be an issue, > it's more likely that other optimizations can break the code. For > example load fusing can break code that expects repeated loads in a > loop. E.g. I found these uses of i_size_read in loops: > > git grep -E '(for|while) \(.*i_size_read' > fs/ocfs2/dir.c: while (ctx->pos < i_size_read(inode)) { > fs/ocfs2/dir.c: for (i = 0; i < i_size_read(inode) && > i < offset; ) { > fs/ocfs2/dir.c: while (ctx->pos < i_size_read(inode)) { > fs/ocfs2/dir.c: while (ctx->pos < i_size_read(inode) > fs/squashfs/dir.c: while (length < i_size_read(inode)) { > fs/squashfs/namei.c: while (length < i_size_read(dir)) { > > Can i_size writes happen concurrently, and if so will these break if > the compiler decides to just do i_size_read's load once, and keep the > result in a register? Al, is it more acceptable to add READ_ONCE() only then?