Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp1083010pxx; Tue, 27 Oct 2020 07:55:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx0RziQh4WO7dtNlD6RQLtDsT10YzCqZfg6H/QyPNNWKKoHfarqcPO/qDoWrcLTW1Z2Bkvi X-Received: by 2002:a17:906:a988:: with SMTP id jr8mr2722996ejb.508.1603810502980; Tue, 27 Oct 2020 07:55:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603810502; cv=none; d=google.com; s=arc-20160816; b=o4UNj28qzFyYybhsZ3HxDrXbGuTRLoZGI+ZXv3MNVn/76paNWOjgNEf2MWPR4PXWon 3ooFO6HcPtenc97/IISNa5JP1+yxIWFJrYkDqJn5P6F20Z4HvS2WchyeF36WQsWVsrx7 diwpqWBWBTjPi6kAinr+NvjP5N8eSq2c1D9nRZD8A2ODEn+QdG+aIllkjwmCyFVXszeD JpIKduABULfaXYCPCOF1XBZyzIoBNReaIE1h52QVjz49tgrAVpanU+ugcBfHr3B3ShGe MpDeePE/3tYkmgrpLjgkO9TiDAeC1IRbErCjasLQWQjIzKCri5u3u19DwdGt625VoDKy Lx/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from; bh=WONVkVFpmMyw55IalNOBFZI+8ZLeQzqaQf3X0kYHReY=; b=eD9B02pqnnfG8mG4pSlSrfYcQNExNQApn5saabY99de0JqQxrdO1JmGrZL472KG9CN 0uosEONUY7DSROm7R9f9PAQrOBm7pJXxdVn2k11gHxH4WzR6yv5iAWZu0EP2TGoPExUG 3oaKEjROUsdjpOb5CA+wc4r7LivgddavJNQKVQEkXS0MdV+cLwCV08f/ZkXMIaODAWjp l0U9siWmMUzskbPrTlGr9WpjlVwmkF/JK89ZvEoCd64lET36VJV7HMMHb4MN9z/Cdycz /q+OCZXmOpVjH0LN5+k+MEcl28rIKdFmoClZQ3AJwVTTZEEj7cEj5S2y/WZi6JdSA4x9 dICg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f19si1063650edx.542.2020.10.27.07.54.35; Tue, 27 Oct 2020 07:55:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2900684AbgJ0N15 (ORCPT + 99 others); Tue, 27 Oct 2020 09:27:57 -0400 Received: from mx2.suse.de ([195.135.220.15]:58620 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2900681AbgJ0N15 (ORCPT ); Tue, 27 Oct 2020 09:27:57 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id E3AB0ACAC; Tue, 27 Oct 2020 13:27:55 +0000 (UTC) Received: by quack2.suse.cz (Postfix, from userid 1000) id 9D51D1E10F5; Tue, 27 Oct 2020 14:27:55 +0100 (CET) From: Jan Kara To: Ted Tso Cc: , Mauricio Faria de Oliveira , Jan Kara Subject: [PATCH] ext4: Fix mmap write protection for data=journal mode Date: Tue, 27 Oct 2020 14:27:51 +0100 Message-Id: <20201027132751.29858-1-jack@suse.cz> X-Mailer: git-send-email 2.16.4 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Commit afb585a97f81 "ext4: data=journal: write-protect pages on j_submit_inode_data_buffers()") added calls ext4_jbd2_inode_add_write() to track inode ranges whose mappings need to get write-protected during transaction commits. However the added calls use wrong start of a range (0 instead of page offset) and so write protection is not necessarily effective. Use correct range start to fix the problem. Fixes: afb585a97f81 ("ext4: data=journal: write-protect pages on j_submit_inode_data_buffers()") Signed-off-by: Jan Kara --- fs/ext4/inode.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) Mauricio, I think this could be the reason for occasional test failures you were still seeing. Can you try whether this patch fixes those for you? Thanks! diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 03c2253005f0..f4a599c6dcde 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -1918,7 +1918,7 @@ static int __ext4_journalled_writepage(struct page *page, } if (ret == 0) ret = err; - err = ext4_jbd2_inode_add_write(handle, inode, 0, len); + err = ext4_jbd2_inode_add_write(handle, inode, page_offset(page), len); if (ret == 0) ret = err; EXT4_I(inode)->i_datasync_tid = handle->h_transaction->t_tid; @@ -6157,7 +6157,8 @@ vm_fault_t ext4_page_mkwrite(struct vm_fault *vmf) if (ext4_walk_page_buffers(handle, page_buffers(page), 0, len, NULL, write_end_fn)) goto out_error; - if (ext4_jbd2_inode_add_write(handle, inode, 0, len)) + if (ext4_jbd2_inode_add_write(handle, inode, + page_offset(page), len)) goto out_error; ext4_set_inode_state(inode, EXT4_STATE_JDATA); } else { -- 2.16.4