From patchwork Fri Nov 6 03:58:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: harshad shirwadkar X-Patchwork-Id: 1395452 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=dKXVnW3P; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CS68Z2gWlz9sVK for ; Fri, 6 Nov 2020 14:59:26 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726072AbgKFD70 (ORCPT ); Thu, 5 Nov 2020 22:59:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58284 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726057AbgKFD7Z (ORCPT ); Thu, 5 Nov 2020 22:59:25 -0500 Received: from mail-pf1-x42d.google.com (mail-pf1-x42d.google.com [IPv6:2607:f8b0:4864:20::42d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 760A7C0613D2 for ; Thu, 5 Nov 2020 19:59:24 -0800 (PST) Received: by mail-pf1-x42d.google.com with SMTP id 10so103339pfp.5 for ; Thu, 05 Nov 2020 19:59:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=yGYMhXubDnTSMiVCcmAEDBpCZMGqDU2RYbjNdOd1vmw=; b=dKXVnW3PTTStwwwm7pyLhH8zvMjd4wJfV/KCWKnZwpnH2dVRmG7aeWf3oDAZ5Q1dvB lfpbnv/YlPScxWCeFYGZl766sunNIQXSVtiGtJvu/wnfV6Virf7VG6mcGGWE3r7IBzUN IHVLJh20X9qho6nihNW1XErDtpWwUVZ2zRv6uWmET5PqNwcfXpo0IUhKvFAq6hsiYUJ6 GJFtf9vLa8r+ZHewFbXv+9kYpMw8QAUBTa7KjrP/DE+sndhIfc5WcEs/xO2ynaeO4jGP R41Dbl3Pg9nR42zjYkegyWgxD11jzjHbzJKCukHx+X1CWZUuz6ZcKVPLLPheKPrOMjcz 7bkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=yGYMhXubDnTSMiVCcmAEDBpCZMGqDU2RYbjNdOd1vmw=; b=A571s8WBkSSQbONM20fEjZLyeU7nC6Cr4GvLzx162PAB+oVPzVh6MMcH9sVVE8TG80 /Qq1DlIbN/kKCTTii0WkE0/eyLhRt6bJyAoC2xixakxD744M3GgS8MPDI32rJbQwpzYh 0q5O3kQpmayY8J5BSVGLpRu6e7cY1E1zNwHoENlp6rAf4kOqUIKH4TTzjm3y9V0c52Rb QZ4/o/x0Gnm4ln8jxZSYLaudlLKnfugyFsTK2vLiwQuAsxmDIu5Tli5gbjVPGuK2L2Mv O2cnQ9qzhhq9VnjRpN/+aO9nEypXiMuKVQ5D0VocvXX7FT2OzkVSGcZF074gYv7arg4/ Ss9g== X-Gm-Message-State: AOAM531RmHpq7lZ7WXUMpRx+zzqrK13Ab03uUL52QwgEIKbBRs7hko7M ftenlXq0JPD2irXPWT7Qa1kHRvY/UKw= X-Google-Smtp-Source: ABdhPJxnPYa6xEem40gmQR+ahzYbJ8qfJxrrK/2nO/zncV4FX8xtMg7hPPubPdUczu1NLAp8r9SHig== X-Received: by 2002:a17:90a:ef8b:: with SMTP id m11mr240982pjy.161.1604635163504; Thu, 05 Nov 2020 19:59:23 -0800 (PST) Received: from harshads-520.kir.corp.google.com ([2620:15c:17:10:a6ae:11ff:fe11:86a2]) by smtp.googlemail.com with ESMTPSA id z13sm3869429pgc.44.2020.11.05.19.59.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2020 19:59:22 -0800 (PST) From: Harshad Shirwadkar To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Harshad Shirwadkar , Jan Kara Subject: [PATCH v2 01/22] ext4: describe fast_commit feature flags Date: Thu, 5 Nov 2020 19:58:50 -0800 Message-Id: <20201106035911.1942128-2-harshadshirwadkar@gmail.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog In-Reply-To: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> References: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Fast commit feature has flags in the file system as well in JBD2. The meaning of fast commit feature flags can get confusing. Update docs and code to add more documentation about it. Suggested-by: Jan Kara Signed-off-by: Harshad Shirwadkar Reviewed-by: Jan Kara --- Documentation/filesystems/ext4/journal.rst | 6 ++++++ Documentation/filesystems/ext4/super.rst | 7 +++++++ fs/ext4/ext4.h | 7 +++++++ 3 files changed, 20 insertions(+) diff --git a/Documentation/filesystems/ext4/journal.rst b/Documentation/filesystems/ext4/journal.rst index 805a1e9ea3a5..849d5b119eb8 100644 --- a/Documentation/filesystems/ext4/journal.rst +++ b/Documentation/filesystems/ext4/journal.rst @@ -256,6 +256,10 @@ which is 1024 bytes long: - s\_padding2 - * - 0x54 + - \_\_be32 + - s\_num\_fc\_blocks + - Number of fast commit blocks in the journal. + * - 0x58 - \_\_u32 - s\_padding[42] - @@ -310,6 +314,8 @@ The journal incompat features are any combination of the following: - This journal uses v3 of the checksum on-disk format. This is the same as v2, but the journal block tag size is fixed regardless of the size of block numbers. (JBD2\_FEATURE\_INCOMPAT\_CSUM\_V3) + * - 0x20 + - Journal has fast commit blocks. (JBD2\_FEATURE\_INCOMPAT\_FAST\_COMMIT) .. _jbd2_checksum_type: diff --git a/Documentation/filesystems/ext4/super.rst b/Documentation/filesystems/ext4/super.rst index 93e55d7c1d40..2eb1ab20498d 100644 --- a/Documentation/filesystems/ext4/super.rst +++ b/Documentation/filesystems/ext4/super.rst @@ -596,6 +596,13 @@ following: - Sparse Super Block, v2. If this flag is set, the SB field s\_backup\_bgs points to the two block groups that contain backup superblocks (COMPAT\_SPARSE\_SUPER2). + * - 0x400 + - Fast commits supported. Although fast commits blocks are + backward incompatible, fast commit blocks are not always + present in the journal. If fast commit blocks are present in + the journal, JBD2 incompat feature + (JBD2\_FEATURE\_INCOMPAT\_FAST\_COMMIT) gets + set (COMPAT\_FAST\_COMMIT). .. _super_incompat: diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index 2337e443fa30..12673f9ec880 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -1875,6 +1875,13 @@ static inline bool ext4_verity_in_progress(struct inode *inode) #define EXT4_FEATURE_COMPAT_RESIZE_INODE 0x0010 #define EXT4_FEATURE_COMPAT_DIR_INDEX 0x0020 #define EXT4_FEATURE_COMPAT_SPARSE_SUPER2 0x0200 +/* + * The reason why "FAST_COMMIT" is a compat feature is that, FS becomes + * incompatible only if fast commit blocks are present in the FS. Since we + * clear the journal (and thus the fast commit blocks), we don't mark FS as + * incompatible. We also have a JBD2 incompat feature, which gets set when + * there are fast commit blocks present in the journal. + */ #define EXT4_FEATURE_COMPAT_FAST_COMMIT 0x0400 #define EXT4_FEATURE_COMPAT_STABLE_INODES 0x0800 From patchwork Fri Nov 6 03:58:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: harshad shirwadkar X-Patchwork-Id: 1395453 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=OZ3pkGnc; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CS68b593gz9sVK for ; Fri, 6 Nov 2020 14:59:27 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726075AbgKFD71 (ORCPT ); Thu, 5 Nov 2020 22:59:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58288 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726074AbgKFD71 (ORCPT ); Thu, 5 Nov 2020 22:59:27 -0500 Received: from mail-pg1-x541.google.com (mail-pg1-x541.google.com [IPv6:2607:f8b0:4864:20::541]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BC1BBC0613CF for ; Thu, 5 Nov 2020 19:59:25 -0800 (PST) Received: by mail-pg1-x541.google.com with SMTP id x13so2928463pgp.7 for ; Thu, 05 Nov 2020 19:59:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=t0t1NbJLbS56LHyKvofC03BLMZMF2MU5eZrdOs0SCio=; b=OZ3pkGncfocM342A8IfDAva6uO6TQ/uP7pcWB/WBJYMYmzPG7xeC/9JBHWRhfbo1xf LVAjRdu3Voljy/f3LoIJJfa/qFnQ5t+yPG0p+C5+WxXUzBu+64dJ3E+n4NSC8p71bNuw cJRjsMZeaB6+hCpjc+3xTFj3GbHVaueHVPbdbp/QixAkc3PjvS0ZeGhdf+doOVZPgzU9 aNimTXKXBRB49DUyqOUk3jwyxPHJzDejEKsFj3422LPF88f++Dc3WM9do7k1Z/y+sOZb uUjbbVSteYAYSQABg952xRsMI1wMzxHxOwSEu3N/LvNxZkEzQvFW1rZamB9Sv6RYlRRh K0gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=t0t1NbJLbS56LHyKvofC03BLMZMF2MU5eZrdOs0SCio=; b=FsTKao/pT2je5/xj5FE9pD6y6GSCl3GvusvLl6jiStWkg3a5g/mBxXKXSrXcanJLhr j1LGTlU7nhHTsCKu8gsxXOkmKCwwZo5snXjx3vhpDbZu/TqfAHv8FWVBP2mzvj1R7cFd Flx5FXzJ+O4RmR+vICM8GiwEZWjuz25+nlRT0jfbPdos40Q5PnkGck79maigb26KMt8J LfnkGgvqOOJPpyqDsceDQSG61NRKMQuUUc8jnaizETA5AcW8ao5L7c8z/SIuYk94J6Nc Px/m6JFsxvR1rZfnBMIVnLx48cLf885zUC/Te1rpKYvg+1Xhb+RkgSZ3xsgP4yivDUB9 Kmwg== X-Gm-Message-State: AOAM531xc6if2eljNaRF0jYm4uJcqYE9o0vu3KjCjV2iXN8QUogdLW1q 6/BdeLxTSfxubGHcrh+AZgWolC8dcPg= X-Google-Smtp-Source: ABdhPJwVABJIBba6eX2A4/pP+qZMaaq5YMqE3664swNns3T8Amz9ZyfToue56lrGb+J0rRljSCMxEQ== X-Received: by 2002:a17:90a:160f:: with SMTP id n15mr257570pja.75.1604635164930; Thu, 05 Nov 2020 19:59:24 -0800 (PST) Received: from harshads-520.kir.corp.google.com ([2620:15c:17:10:a6ae:11ff:fe11:86a2]) by smtp.googlemail.com with ESMTPSA id z13sm3869429pgc.44.2020.11.05.19.59.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2020 19:59:23 -0800 (PST) From: Harshad Shirwadkar To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Harshad Shirwadkar , Jan Kara Subject: [PATCH v2 02/22] ext4: mark fc ineligible if inode gets evictied due to mem pressure Date: Thu, 5 Nov 2020 19:58:51 -0800 Message-Id: <20201106035911.1942128-3-harshadshirwadkar@gmail.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog In-Reply-To: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> References: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org If inode gets evicted due to memory pressure, we have to remove it from the fast commit list. However, that inode may have uncommitted changes that fast commits will lose. So, just fall back to full commits in this case. Also, rename the fast commit ineligiblity reason from "EXT4_FC_REASON_MEM" to "EXT4_FC_REASON_MEM_NOMEM" for better expression. Suggested-by: Jan Kara Signed-off-by: Harshad Shirwadkar --- fs/ext4/fast_commit.c | 4 ++-- fs/ext4/fast_commit.h | 2 +- fs/ext4/inode.c | 2 ++ include/trace/events/ext4.h | 6 +++--- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/fs/ext4/fast_commit.c b/fs/ext4/fast_commit.c index 8d43058386c3..48b7bc129392 100644 --- a/fs/ext4/fast_commit.c +++ b/fs/ext4/fast_commit.c @@ -384,7 +384,7 @@ static int __track_dentry_update(struct inode *inode, void *arg, bool update) mutex_unlock(&ei->i_fc_lock); node = kmem_cache_alloc(ext4_fc_dentry_cachep, GFP_NOFS); if (!node) { - ext4_fc_mark_ineligible(inode->i_sb, EXT4_FC_REASON_MEM); + ext4_fc_mark_ineligible(inode->i_sb, EXT4_FC_REASON_NOMEM); mutex_lock(&ei->i_fc_lock); return -ENOMEM; } @@ -397,7 +397,7 @@ static int __track_dentry_update(struct inode *inode, void *arg, bool update) if (!node->fcd_name.name) { kmem_cache_free(ext4_fc_dentry_cachep, node); ext4_fc_mark_ineligible(inode->i_sb, - EXT4_FC_REASON_MEM); + EXT4_FC_REASON_NOMEM); mutex_lock(&ei->i_fc_lock); return -ENOMEM; } diff --git a/fs/ext4/fast_commit.h b/fs/ext4/fast_commit.h index 06907d485989..140fbb6af19e 100644 --- a/fs/ext4/fast_commit.h +++ b/fs/ext4/fast_commit.h @@ -100,7 +100,7 @@ enum { EXT4_FC_REASON_XATTR = 0, EXT4_FC_REASON_CROSS_RENAME, EXT4_FC_REASON_JOURNAL_FLAG_CHANGE, - EXT4_FC_REASON_MEM, + EXT4_FC_REASON_NOMEM, EXT4_FC_REASON_SWAP_BOOT, EXT4_FC_REASON_RESIZE, EXT4_FC_REASON_RENAME_DIR, diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index b96a18679a27..081b6a86b5db 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -327,6 +327,8 @@ void ext4_evict_inode(struct inode *inode) ext4_xattr_inode_array_free(ea_inode_array); return; no_delete: + if (!list_empty(&EXT4_I(inode)->i_fc_list)) + ext4_fc_mark_ineligible(inode->i_sb, EXT4_FC_REASON_NOMEM); ext4_clear_inode(inode); /* We must guarantee clearing of inode... */ } diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h index b14314fcf732..0f899d3b09d3 100644 --- a/include/trace/events/ext4.h +++ b/include/trace/events/ext4.h @@ -100,7 +100,7 @@ TRACE_DEFINE_ENUM(ES_REFERENCED_B); { EXT4_FC_REASON_XATTR, "XATTR"}, \ { EXT4_FC_REASON_CROSS_RENAME, "CROSS_RENAME"}, \ { EXT4_FC_REASON_JOURNAL_FLAG_CHANGE, "JOURNAL_FLAG_CHANGE"}, \ - { EXT4_FC_REASON_MEM, "NO_MEM"}, \ + { EXT4_FC_REASON_NOMEM, "NO_MEM"}, \ { EXT4_FC_REASON_SWAP_BOOT, "SWAP_BOOT"}, \ { EXT4_FC_REASON_RESIZE, "RESIZE"}, \ { EXT4_FC_REASON_RENAME_DIR, "RENAME_DIR"}, \ @@ -2917,13 +2917,13 @@ TRACE_EVENT(ext4_fc_stats, ), TP_printk("dev %d:%d fc ineligible reasons:\n" - "%s:%d, %s:%d, %s:%d, %s:%d, %s:%d, %s:%d, %s:%d, %s,%d; " + "%s:%d, %s:%d, %s:%d, %s:%d, %s:%d, %s:%d, %s:%d, %s:%d; " "num_commits:%ld, ineligible: %ld, numblks: %ld", MAJOR(__entry->dev), MINOR(__entry->dev), FC_REASON_NAME_STAT(EXT4_FC_REASON_XATTR), FC_REASON_NAME_STAT(EXT4_FC_REASON_CROSS_RENAME), FC_REASON_NAME_STAT(EXT4_FC_REASON_JOURNAL_FLAG_CHANGE), - FC_REASON_NAME_STAT(EXT4_FC_REASON_MEM), + FC_REASON_NAME_STAT(EXT4_FC_REASON_NOMEM), FC_REASON_NAME_STAT(EXT4_FC_REASON_SWAP_BOOT), FC_REASON_NAME_STAT(EXT4_FC_REASON_RESIZE), FC_REASON_NAME_STAT(EXT4_FC_REASON_RENAME_DIR), From patchwork Fri Nov 6 03:58:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: harshad shirwadkar X-Patchwork-Id: 1395454 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=LrJAk2tg; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CS68c1wkRz9sVV for ; Fri, 6 Nov 2020 14:59:28 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726081AbgKFD71 (ORCPT ); Thu, 5 Nov 2020 22:59:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58284 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726057AbgKFD71 (ORCPT ); Thu, 5 Nov 2020 22:59:27 -0500 Received: from mail-pf1-x442.google.com (mail-pf1-x442.google.com [IPv6:2607:f8b0:4864:20::442]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 135E6C0613D2 for ; Thu, 5 Nov 2020 19:59:27 -0800 (PST) Received: by mail-pf1-x442.google.com with SMTP id q10so120616pfn.0 for ; Thu, 05 Nov 2020 19:59:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8iqE4INhNABlrwChA0F3o0aFxOLjzY4wiZ+eGXCuc8g=; b=LrJAk2tgzrxNAH2fg9deQAG7DZu2IwiU6DDpG1YBedwJVffb795etstXMa6Do6Oc9W ha8uzEA8vaCGvR389LU/yaV99HiGn8BN1MSsuvhA6yVCjXTvhmlXBLDKYZQsszXV2C1i Q8X9A0MVpEzqxxebe9ksweSuoRWXUfY5AiBHtjj4QcUvF1OHfDLQ7Htu9Ns5eZPeNcPv ucPLuIIz8PpSe+yfeZ0fXW83KOQw0OQ/dZCpYD7b5yv3+Vqp4hoxaEnZyDEuLGMSAkyF jOvaFA9clXR1oL5MYVI8Y7RmhaWWQB33666sqCaQP1paQqejge9IngIl1szPZJsPa35b HpZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8iqE4INhNABlrwChA0F3o0aFxOLjzY4wiZ+eGXCuc8g=; b=Pgfr19i/ph7gZsCs5s6QOjk76/CYQX0D3TBNuwIExMDjicpbKVb3mkGabyH7yOJp9B Ja80y3WaQQLJmJTU7Xd11/NwtQx8AwmM51hw7LR0sGVKTLRfFONC25G948Rvh46QCDhp blN+4t2Ic2xgevnD27GZbck6bXleo9pN4FGDh4Iv4U9WjfPqKGzPfZYVdVF8qxoI29aN HujXhgD6LLQLBNJzTxwxYQTwa0WVL0gT6xudd6jrUj9f7Li5eNAzdmHU86qtm5I7UGki hmhoZ2WuvaeGXttqA8c/02IRm/YCjNCcpDzFvD9sMqzKMDMLG2JK2j3AjldJ/P7AOTsS QlbQ== X-Gm-Message-State: AOAM532+mnd7N8Nv+RY/jDUIhln9WqnvxRGQvb6+zfxsmTeRKn13o3ws Um5V9eebcyTg0ag8vimvaC53glpp880= X-Google-Smtp-Source: ABdhPJyWZoHCKlbhSYQeBJ6wedQ/Um+EFgJwAhW2239mIRGs/fYq3RMc3EL0dbiBdmNPSb7hIBVO8A== X-Received: by 2002:aa7:9207:0:b029:18a:ab6f:3a7a with SMTP id 7-20020aa792070000b029018aab6f3a7amr198754pfo.72.1604635166192; Thu, 05 Nov 2020 19:59:26 -0800 (PST) Received: from harshads-520.kir.corp.google.com ([2620:15c:17:10:a6ae:11ff:fe11:86a2]) by smtp.googlemail.com with ESMTPSA id z13sm3869429pgc.44.2020.11.05.19.59.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2020 19:59:25 -0800 (PST) From: Harshad Shirwadkar To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Harshad Shirwadkar Subject: [PATCH v2 03/22] ext4: drop redundant calls ext4_fc_track_range Date: Thu, 5 Nov 2020 19:58:52 -0800 Message-Id: <20201106035911.1942128-4-harshadshirwadkar@gmail.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog In-Reply-To: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> References: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org ext4_fc_track_range() should only be called when blocks are added or removed from an inode. So, the only places from where we need to call this function are ext4_map_blocks(), punch hole, collapse / zero range, truncate. Remove all the other redundant calls to ths function. Signed-off-by: Harshad Shirwadkar --- fs/ext4/extents.c | 5 ----- fs/ext4/super.c | 4 ---- 2 files changed, 9 deletions(-) diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 559100f3e23c..1db762c770ca 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -3723,7 +3723,6 @@ static int ext4_convert_unwritten_extents_endio(handle_t *handle, err = ext4_ext_dirty(handle, inode, path + path->p_depth); out: ext4_ext_show_leaf(inode, path); - ext4_fc_track_range(inode, ee_block, ee_block + ee_len - 1); return err; } @@ -3795,7 +3794,6 @@ convert_initialized_extent(handle_t *handle, struct inode *inode, if (*allocated > map->m_len) *allocated = map->m_len; map->m_len = *allocated; - ext4_fc_track_range(inode, ee_block, ee_block + ee_len - 1); return 0; } @@ -4329,7 +4327,6 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode, map->m_len = ar.len; allocated = map->m_len; ext4_ext_show_leaf(inode, path); - ext4_fc_track_range(inode, map->m_lblk, map->m_lblk + map->m_len - 1); out: ext4_ext_drop_refs(path); kfree(path); @@ -4651,8 +4648,6 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) FALLOC_FL_COLLAPSE_RANGE | FALLOC_FL_ZERO_RANGE | FALLOC_FL_INSERT_RANGE)) return -EOPNOTSUPP; - ext4_fc_track_range(inode, offset >> blkbits, - (offset + len - 1) >> blkbits); ext4_fc_start_update(inode); diff --git a/fs/ext4/super.c b/fs/ext4/super.c index d92de21212e9..804f9fc5bdbd 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -6561,10 +6561,6 @@ static ssize_t ext4_quota_write(struct super_block *sb, int type, brelse(bh); out: if (inode->i_size < off + len) { - ext4_fc_track_range(inode, - (inode->i_size > 0 ? inode->i_size - 1 : 0) - >> inode->i_sb->s_blocksize_bits, - (off + len) >> inode->i_sb->s_blocksize_bits); i_size_write(inode, off + len); EXT4_I(inode)->i_disksize = inode->i_size; err2 = ext4_mark_inode_dirty(handle, inode); From patchwork Fri Nov 6 03:58:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: harshad shirwadkar X-Patchwork-Id: 1395455 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=GdQNf6Og; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CS68d3Z84z9sVK for ; Fri, 6 Nov 2020 14:59:29 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726090AbgKFD73 (ORCPT ); Thu, 5 Nov 2020 22:59:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58298 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726057AbgKFD72 (ORCPT ); Thu, 5 Nov 2020 22:59:28 -0500 Received: from mail-pf1-x442.google.com (mail-pf1-x442.google.com [IPv6:2607:f8b0:4864:20::442]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AA320C0613CF for ; Thu, 5 Nov 2020 19:59:28 -0800 (PST) Received: by mail-pf1-x442.google.com with SMTP id 72so95793pfv.7 for ; Thu, 05 Nov 2020 19:59:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=OoMrL3xjs0iWU5tSplC8CchjMHLt2heZAi93JuRduFo=; b=GdQNf6OgY6JffnhSqnNp+MuDylk/CSXoGmjmzb5bfqCxCeHXVB6y2VuNA7CEoH1Kg7 ekHcyZ22sOpg8I9/2+9rzWlNrwkLGROcJyz7bcQP4cvUlM0e4LFGn2z9FsRDxZGKkR1c WqzK2+Za6tfWkKYe5Z5/AzWzw1cq/Xq+YQrCEvAwD4/I70agX+oLIeqMUJI1aKxOIxz9 TYuh/HsFV3j8we41ED7OkxZAhrmrcjIJvj6ytSuT8+BtgocDvDHgLysTieT1xz8m6/vS NTyHefyQfnLJ2Nm47OL4deToVXSJN4SnAq3Zri0cSHmucxV5K1MIRSDLxlbNdRP5QrpT +IZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=OoMrL3xjs0iWU5tSplC8CchjMHLt2heZAi93JuRduFo=; b=qMQ4XKO/KMse6iPteyEM7qTqe5jzwxbtm1Oavl96AnhPsn+323S5/b5hpDrY8q9lB4 Z9El6SsnZj9JfVU1caI+RXRlAe5VgtAJ3yhw5P+TfoylsAyG1UDY/a05PqhM0PJhjxFZ F9Br3m67xpA+XQYEbjxalzqf5eKMiaBja57eYYVZ3Ic6fD6vexdVx0+Fv1gI3qEF90wL ljmykrFhn7f3bMNeT+A6Qk0M0hj64tdNbWPfgQ0IbCaJ23ewlQ/H4sTPFj2zx1yoRKsJ OeOM/DeRa8rchWbITfdJta7fR7tZ2b936XvQ4/g1zOUbqQP59FzHBqQegJDgqNb401ki LXuQ== X-Gm-Message-State: AOAM532eqGdOJC968WedaTvxwkXuainEdfkizvMOC6vBmooV9yEfj/Si G34m+R2lq3Pf2Yb9aNQAfcr6DIfFveg= X-Google-Smtp-Source: ABdhPJw8BOszLextwHj7M3iL8haHayzt59ufTuWUBojkKjXoUqYEJh1l3PQLYNMCR2MgCae5TCBrHw== X-Received: by 2002:a62:32c5:0:b029:158:7361:58d3 with SMTP id y188-20020a6232c50000b0290158736158d3mr179516pfy.75.1604635167477; Thu, 05 Nov 2020 19:59:27 -0800 (PST) Received: from harshads-520.kir.corp.google.com ([2620:15c:17:10:a6ae:11ff:fe11:86a2]) by smtp.googlemail.com with ESMTPSA id z13sm3869429pgc.44.2020.11.05.19.59.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2020 19:59:26 -0800 (PST) From: Harshad Shirwadkar To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Harshad Shirwadkar , Jan Kara Subject: [PATCH v2 04/22] ext4: fixup ext4_fc_track_* functions' signature Date: Thu, 5 Nov 2020 19:58:53 -0800 Message-Id: <20201106035911.1942128-5-harshadshirwadkar@gmail.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog In-Reply-To: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> References: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Firstly, pass handle to all ext4_fc_track_* functions and use transaction id found in handle->h_transaction->h_tid for tracking fast commit updates. Secondly, don't pass inode to ext4_fc_track_link/create/unlink functions. inode can be found inside these functions as d_inode(dentry). However, rename path is an exeception. That's because in that case, we need inode that's not same as d_inode(dentry). To handle that, add a couple of low-level wrapper functions that take inode and dentry as arguments. Suggested-by: Jan Kara Signed-off-by: Harshad Shirwadkar --- fs/ext4/ext4.h | 16 +++++++----- fs/ext4/extents.c | 2 +- fs/ext4/fast_commit.c | 48 +++++++++++++++++++++------------- fs/ext4/inode.c | 10 +++---- fs/ext4/namei.c | 61 ++++++++++++++++++++----------------------- 5 files changed, 74 insertions(+), 63 deletions(-) diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index 12673f9ec880..23f8edd4fb2a 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -2750,12 +2750,16 @@ extern void ext4_end_bitmap_read(struct buffer_head *bh, int uptodate); int ext4_fc_info_show(struct seq_file *seq, void *v); void ext4_fc_init(struct super_block *sb, journal_t *journal); void ext4_fc_init_inode(struct inode *inode); -void ext4_fc_track_range(struct inode *inode, ext4_lblk_t start, +void ext4_fc_track_range(handle_t *handle, struct inode *inode, ext4_lblk_t start, ext4_lblk_t end); -void ext4_fc_track_unlink(struct inode *inode, struct dentry *dentry); -void ext4_fc_track_link(struct inode *inode, struct dentry *dentry); -void ext4_fc_track_create(struct inode *inode, struct dentry *dentry); -void ext4_fc_track_inode(struct inode *inode); +void __ext4_fc_track_unlink(handle_t *handle, struct inode *inode, + struct dentry *dentry); +void __ext4_fc_track_link(handle_t *handle, struct inode *inode, + struct dentry *dentry); +void ext4_fc_track_unlink(handle_t *handle, struct dentry *dentry); +void ext4_fc_track_link(handle_t *handle, struct dentry *dentry); +void ext4_fc_track_create(handle_t *handle, struct dentry *dentry); +void ext4_fc_track_inode(handle_t *handle, struct inode *inode); void ext4_fc_mark_ineligible(struct super_block *sb, int reason); void ext4_fc_start_ineligible(struct super_block *sb, int reason); void ext4_fc_stop_ineligible(struct super_block *sb); @@ -3471,7 +3475,7 @@ extern int ext4_handle_dirty_dirblock(handle_t *handle, struct inode *inode, extern int ext4_ci_compare(const struct inode *parent, const struct qstr *fname, const struct qstr *entry, bool quick); -extern int __ext4_unlink(struct inode *dir, const struct qstr *d_name, +extern int __ext4_unlink(handle_t *handle, struct inode *dir, const struct qstr *d_name, struct inode *inode); extern int __ext4_link(struct inode *dir, struct inode *inode, struct dentry *dentry); diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 1db762c770ca..1bac0e237e7c 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -4599,7 +4599,7 @@ static long ext4_zero_range(struct file *file, loff_t offset, ret = ext4_mark_inode_dirty(handle, inode); if (unlikely(ret)) goto out_handle; - ext4_fc_track_range(inode, offset >> inode->i_sb->s_blocksize_bits, + ext4_fc_track_range(handle, inode, offset >> inode->i_sb->s_blocksize_bits, (offset + len - 1) >> inode->i_sb->s_blocksize_bits); /* Zero out partial block at the edges of the range */ ret = ext4_zero_partial_blocks(handle, inode, offset, len); diff --git a/fs/ext4/fast_commit.c b/fs/ext4/fast_commit.c index 48b7bc129392..9399e9cccb7e 100644 --- a/fs/ext4/fast_commit.c +++ b/fs/ext4/fast_commit.c @@ -323,13 +323,14 @@ static inline int ext4_fc_is_ineligible(struct super_block *sb) * If enqueue is set, this function enqueues the inode in fast commit list. */ static int ext4_fc_track_template( - struct inode *inode, int (*__fc_track_fn)(struct inode *, void *, bool), + handle_t *handle, struct inode *inode, + int (*__fc_track_fn)(struct inode *, void *, bool), void *args, int enqueue) { - tid_t running_txn_tid; bool update = false; struct ext4_inode_info *ei = EXT4_I(inode); struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); + tid_t tid = 0; int ret; if (!test_opt2(inode->i_sb, JOURNAL_FAST_COMMIT) || @@ -339,15 +340,13 @@ static int ext4_fc_track_template( if (ext4_fc_is_ineligible(inode->i_sb)) return -EINVAL; - running_txn_tid = sbi->s_journal ? - sbi->s_journal->j_commit_sequence + 1 : 0; - + tid = handle->h_transaction->t_tid; mutex_lock(&ei->i_fc_lock); - if (running_txn_tid == ei->i_sync_tid) { + if (tid == ei->i_sync_tid) { update = true; } else { ext4_fc_reset_inode(inode); - ei->i_sync_tid = running_txn_tid; + ei->i_sync_tid = tid; } ret = __fc_track_fn(inode, args, update); mutex_unlock(&ei->i_fc_lock); @@ -422,7 +421,8 @@ static int __track_dentry_update(struct inode *inode, void *arg, bool update) return 0; } -void ext4_fc_track_unlink(struct inode *inode, struct dentry *dentry) +void __ext4_fc_track_unlink(handle_t *handle, + struct inode *inode, struct dentry *dentry) { struct __track_dentry_update_args args; int ret; @@ -430,12 +430,18 @@ void ext4_fc_track_unlink(struct inode *inode, struct dentry *dentry) args.dentry = dentry; args.op = EXT4_FC_TAG_UNLINK; - ret = ext4_fc_track_template(inode, __track_dentry_update, + ret = ext4_fc_track_template(handle, inode, __track_dentry_update, (void *)&args, 0); trace_ext4_fc_track_unlink(inode, dentry, ret); } -void ext4_fc_track_link(struct inode *inode, struct dentry *dentry) +void ext4_fc_track_unlink(handle_t *handle, struct dentry *dentry) +{ + __ext4_fc_track_unlink(handle, d_inode(dentry), dentry); +} + +void __ext4_fc_track_link(handle_t *handle, + struct inode *inode, struct dentry *dentry) { struct __track_dentry_update_args args; int ret; @@ -443,20 +449,26 @@ void ext4_fc_track_link(struct inode *inode, struct dentry *dentry) args.dentry = dentry; args.op = EXT4_FC_TAG_LINK; - ret = ext4_fc_track_template(inode, __track_dentry_update, + ret = ext4_fc_track_template(handle, inode, __track_dentry_update, (void *)&args, 0); trace_ext4_fc_track_link(inode, dentry, ret); } -void ext4_fc_track_create(struct inode *inode, struct dentry *dentry) +void ext4_fc_track_link(handle_t *handle, struct dentry *dentry) +{ + __ext4_fc_track_link(handle, d_inode(dentry), dentry); +} + +void ext4_fc_track_create(handle_t *handle, struct dentry *dentry) { struct __track_dentry_update_args args; + struct inode *inode = d_inode(dentry); int ret; args.dentry = dentry; args.op = EXT4_FC_TAG_CREAT; - ret = ext4_fc_track_template(inode, __track_dentry_update, + ret = ext4_fc_track_template(handle, inode, __track_dentry_update, (void *)&args, 0); trace_ext4_fc_track_create(inode, dentry, ret); } @@ -472,14 +484,14 @@ static int __track_inode(struct inode *inode, void *arg, bool update) return 0; } -void ext4_fc_track_inode(struct inode *inode) +void ext4_fc_track_inode(handle_t *handle, struct inode *inode) { int ret; if (S_ISDIR(inode->i_mode)) return; - ret = ext4_fc_track_template(inode, __track_inode, NULL, 1); + ret = ext4_fc_track_template(handle, inode, __track_inode, NULL, 1); trace_ext4_fc_track_inode(inode, ret); } @@ -515,7 +527,7 @@ static int __track_range(struct inode *inode, void *arg, bool update) return 0; } -void ext4_fc_track_range(struct inode *inode, ext4_lblk_t start, +void ext4_fc_track_range(handle_t *handle, struct inode *inode, ext4_lblk_t start, ext4_lblk_t end) { struct __track_range_args args; @@ -527,7 +539,7 @@ void ext4_fc_track_range(struct inode *inode, ext4_lblk_t start, args.start = start; args.end = end; - ret = ext4_fc_track_template(inode, __track_range, &args, 1); + ret = ext4_fc_track_template(handle, inode, __track_range, &args, 1); trace_ext4_fc_track_range(inode, start, end, ret); } @@ -1263,7 +1275,7 @@ static int ext4_fc_replay_unlink(struct super_block *sb, struct ext4_fc_tl *tl) return 0; } - ret = __ext4_unlink(old_parent, &entry, inode); + ret = __ext4_unlink(NULL, old_parent, &entry, inode); /* -ENOENT ok coz it might not exist anymore. */ if (ret == -ENOENT) ret = 0; diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 081b6a86b5db..87120c4c44f3 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -732,7 +732,7 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode, if (ret) return ret; } - ext4_fc_track_range(inode, map->m_lblk, + ext4_fc_track_range(handle, inode, map->m_lblk, map->m_lblk + map->m_len - 1); } @@ -4111,7 +4111,7 @@ int ext4_punch_hole(struct inode *inode, loff_t offset, loff_t length) up_write(&EXT4_I(inode)->i_data_sem); } - ext4_fc_track_range(inode, first_block, stop_block); + ext4_fc_track_range(handle, inode, first_block, stop_block); if (IS_SYNC(inode)) ext4_handle_sync(handle); @@ -5444,14 +5444,14 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr) } if (shrink) - ext4_fc_track_range(inode, + ext4_fc_track_range(handle, inode, (attr->ia_size > 0 ? attr->ia_size - 1 : 0) >> inode->i_sb->s_blocksize_bits, (oldsize > 0 ? oldsize - 1 : 0) >> inode->i_sb->s_blocksize_bits); else ext4_fc_track_range( - inode, + handle, inode, (oldsize > 0 ? oldsize - 1 : oldsize) >> inode->i_sb->s_blocksize_bits, (attr->ia_size > 0 ? attr->ia_size - 1 : 0) >> @@ -5701,7 +5701,7 @@ int ext4_mark_iloc_dirty(handle_t *handle, put_bh(iloc->bh); return -EIO; } - ext4_fc_track_inode(inode); + ext4_fc_track_inode(handle, inode); if (IS_I_VERSION(inode)) inode_inc_iversion(inode); diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c index 5159830dacb8..b0d4371b684b 100644 --- a/fs/ext4/namei.c +++ b/fs/ext4/namei.c @@ -2610,7 +2610,7 @@ static int ext4_create(struct inode *dir, struct dentry *dentry, umode_t mode, bool excl) { handle_t *handle; - struct inode *inode, *inode_save; + struct inode *inode; int err, credits, retries = 0; err = dquot_initialize(dir); @@ -2628,11 +2628,9 @@ static int ext4_create(struct inode *dir, struct dentry *dentry, umode_t mode, inode->i_op = &ext4_file_inode_operations; inode->i_fop = &ext4_file_operations; ext4_set_aops(inode); - inode_save = inode; - ihold(inode_save); err = ext4_add_nondir(handle, dentry, &inode); - ext4_fc_track_create(inode_save, dentry); - iput(inode_save); + if (!err) + ext4_fc_track_create(handle, dentry); } if (handle) ext4_journal_stop(handle); @@ -2647,7 +2645,7 @@ static int ext4_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t rdev) { handle_t *handle; - struct inode *inode, *inode_save; + struct inode *inode; int err, credits, retries = 0; err = dquot_initialize(dir); @@ -2664,12 +2662,9 @@ static int ext4_mknod(struct inode *dir, struct dentry *dentry, if (!IS_ERR(inode)) { init_special_inode(inode, inode->i_mode, rdev); inode->i_op = &ext4_special_inode_operations; - inode_save = inode; - ihold(inode_save); err = ext4_add_nondir(handle, dentry, &inode); if (!err) - ext4_fc_track_create(inode_save, dentry); - iput(inode_save); + ext4_fc_track_create(handle, dentry); } if (handle) ext4_journal_stop(handle); @@ -2833,7 +2828,6 @@ static int ext4_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) iput(inode); goto out_retry; } - ext4_fc_track_create(inode, dentry); ext4_inc_count(dir); ext4_update_dx_flag(dir); @@ -2841,6 +2835,7 @@ static int ext4_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) if (err) goto out_clear_inode; d_instantiate_new(dentry, inode); + ext4_fc_track_create(handle, dentry); if (IS_DIRSYNC(dir)) ext4_handle_sync(handle); @@ -3175,7 +3170,7 @@ static int ext4_rmdir(struct inode *dir, struct dentry *dentry) goto end_rmdir; ext4_dec_count(dir); ext4_update_dx_flag(dir); - ext4_fc_track_unlink(inode, dentry); + ext4_fc_track_unlink(handle, dentry); retval = ext4_mark_inode_dirty(handle, dir); #ifdef CONFIG_UNICODE @@ -3196,13 +3191,12 @@ static int ext4_rmdir(struct inode *dir, struct dentry *dentry) return retval; } -int __ext4_unlink(struct inode *dir, const struct qstr *d_name, +int __ext4_unlink(handle_t *handle, struct inode *dir, const struct qstr *d_name, struct inode *inode) { int retval = -ENOENT; struct buffer_head *bh; struct ext4_dir_entry_2 *de; - handle_t *handle = NULL; int skip_remove_dentry = 0; bh = ext4_find_entry(dir, d_name, &de, NULL); @@ -3221,14 +3215,7 @@ int __ext4_unlink(struct inode *dir, const struct qstr *d_name, if (EXT4_SB(inode->i_sb)->s_mount_state & EXT4_FC_REPLAY) skip_remove_dentry = 1; else - goto out_bh; - } - - handle = ext4_journal_start(dir, EXT4_HT_DIR, - EXT4_DATA_TRANS_BLOCKS(dir->i_sb)); - if (IS_ERR(handle)) { - retval = PTR_ERR(handle); - goto out_bh; + goto out; } if (IS_DIRSYNC(dir)) @@ -3237,12 +3224,12 @@ int __ext4_unlink(struct inode *dir, const struct qstr *d_name, if (!skip_remove_dentry) { retval = ext4_delete_entry(handle, dir, de, bh); if (retval) - goto out_handle; + goto out; dir->i_ctime = dir->i_mtime = current_time(dir); ext4_update_dx_flag(dir); retval = ext4_mark_inode_dirty(handle, dir); if (retval) - goto out_handle; + goto out; } else { retval = 0; } @@ -3256,15 +3243,14 @@ int __ext4_unlink(struct inode *dir, const struct qstr *d_name, inode->i_ctime = current_time(inode); retval = ext4_mark_inode_dirty(handle, inode); -out_handle: - ext4_journal_stop(handle); -out_bh: +out: brelse(bh); return retval; } static int ext4_unlink(struct inode *dir, struct dentry *dentry) { + handle_t *handle; int retval; if (unlikely(ext4_forced_shutdown(EXT4_SB(dir->i_sb)))) @@ -3282,9 +3268,16 @@ static int ext4_unlink(struct inode *dir, struct dentry *dentry) if (retval) goto out_trace; - retval = __ext4_unlink(dir, &dentry->d_name, d_inode(dentry)); + handle = ext4_journal_start(dir, EXT4_HT_DIR, + EXT4_DATA_TRANS_BLOCKS(dir->i_sb)); + if (IS_ERR(handle)) { + retval = PTR_ERR(handle); + goto out_trace; + } + + retval = __ext4_unlink(handle, dir, &dentry->d_name, d_inode(dentry)); if (!retval) - ext4_fc_track_unlink(d_inode(dentry), dentry); + ext4_fc_track_unlink(handle, dentry); #ifdef CONFIG_UNICODE /* VFS negative dentries are incompatible with Encoding and * Case-insensitiveness. Eventually we'll want avoid @@ -3295,6 +3288,8 @@ static int ext4_unlink(struct inode *dir, struct dentry *dentry) if (IS_CASEFOLDED(dir)) d_invalidate(dentry); #endif + if (handle) + ext4_journal_stop(handle); out_trace: trace_ext4_unlink_exit(dentry, retval); @@ -3451,7 +3446,6 @@ int __ext4_link(struct inode *dir, struct inode *inode, struct dentry *dentry) err = ext4_add_entry(handle, dentry, inode); if (!err) { - ext4_fc_track_link(inode, dentry); err = ext4_mark_inode_dirty(handle, inode); /* this can happen only for tmpfile being * linked the first time @@ -3459,6 +3453,7 @@ int __ext4_link(struct inode *dir, struct inode *inode, struct dentry *dentry) if (inode->i_nlink == 1) ext4_orphan_del(handle, inode); d_instantiate(dentry, inode); + ext4_fc_track_link(handle, dentry); } else { drop_nlink(inode); iput(inode); @@ -3919,9 +3914,9 @@ static int ext4_rename(struct inode *old_dir, struct dentry *old_dentry, EXT4_FC_REASON_RENAME_DIR); } else { if (new.inode) - ext4_fc_track_unlink(new.inode, new.dentry); - ext4_fc_track_link(old.inode, new.dentry); - ext4_fc_track_unlink(old.inode, old.dentry); + ext4_fc_track_unlink(handle, new.dentry); + __ext4_fc_track_link(handle, old.inode, new.dentry); + __ext4_fc_track_unlink(handle, old.inode, old.dentry); } if (new.inode) { From patchwork Fri Nov 6 03:58:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: harshad shirwadkar X-Patchwork-Id: 1395456 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=ux23eq84; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CS68f68Vyz9sVK for ; Fri, 6 Nov 2020 14:59:30 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726096AbgKFD7a (ORCPT ); Thu, 5 Nov 2020 22:59:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58304 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726057AbgKFD7a (ORCPT ); Thu, 5 Nov 2020 22:59:30 -0500 Received: from mail-pg1-x541.google.com (mail-pg1-x541.google.com [IPv6:2607:f8b0:4864:20::541]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F1227C0613CF for ; Thu, 5 Nov 2020 19:59:29 -0800 (PST) Received: by mail-pg1-x541.google.com with SMTP id r10so2920093pgb.10 for ; Thu, 05 Nov 2020 19:59:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=yrCAsD6sTsZKCbWwui6UiRuhNmDp9/3At7qA5SSP80U=; b=ux23eq84RMvnJ+9nRa2yxNVwP5U/s7+o3hnZdy5Ks5OZKzccjZivjeu7x8L6/6raEh KSERhq4DBN+xPA1S4N6G2+yabfTH/Pqwu0unZMp4Ze4wPxopHex6MYhMRV02RYS9vj1b +3+yY4JlrgfZhQznJ+pCp/YY1uqStU7gQ40Ox5n7RpfkOIsuMSSmqS5/Bk1NkkfYMw6d 4s6QaOERo19ZkPr03YG+tgv+J5bcPr5vfKyLHrDluG3LghY3bOWuBewbCS3BJq4l0Qgf 05MG3TMwSMsUzvb0Ac/fOAat82uDPXW3Ip6shJb0hvkC4MRt9sPVhF2XlIjCNDv01uNE 70EQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=yrCAsD6sTsZKCbWwui6UiRuhNmDp9/3At7qA5SSP80U=; b=RKWFExOLxs+pzac2pvq7q9gjMvyvVT9XO8zksO61ZvGA8HNbV12DqTKiyRXg8PyzXh rroqx200XgE14gSJXpaZ57FLurvMbeyxhXDiVtz1tYbALJ2wyWvgJs+Vu07W/9cbJEB0 x6rOUPvZeuqa7+E6QVOgYxenyWBmb9fNUm+ladZkNSPQaCeA2aizK+21L5XV1iD6Dk17 +DyN2gJUYMtB6+xD9SOw3UJhOwRBS066KW/+xzv8jxvkUznYISF3oYOIHuCZhhRhiaW6 kNrDYvu5/9fyjuqJtTI1gf5/ifj443HeclANBsuWXh3JopuHiMdbSEx24xjp5IuiCN/q SiUA== X-Gm-Message-State: AOAM530s70wbU3NITTtC+tF8suO2Xe85+VdMt2ZGEq3Iz+9l/IzfgMRO afjKetJWN31BGhDtXMDlbRH1FrabkZs= X-Google-Smtp-Source: ABdhPJyq8bi5uwjS1yzI5denmLgm2E4XOm0mcW/7z5jzVowAEJTg9NEcfMZkhfPNT9wgHbXOrUjFMg== X-Received: by 2002:aa7:8d05:0:b029:18b:6f5f:1ea with SMTP id j5-20020aa78d050000b029018b6f5f01eamr91408pfe.38.1604635169072; Thu, 05 Nov 2020 19:59:29 -0800 (PST) Received: from harshads-520.kir.corp.google.com ([2620:15c:17:10:a6ae:11ff:fe11:86a2]) by smtp.googlemail.com with ESMTPSA id z13sm3869429pgc.44.2020.11.05.19.59.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2020 19:59:27 -0800 (PST) From: Harshad Shirwadkar To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Harshad Shirwadkar , Jan Kara Subject: [PATCH v2 05/22] jbd2: rename j_maxlen to j_total_len and add jbd2_journal_max_txn_bufs Date: Thu, 5 Nov 2020 19:58:54 -0800 Message-Id: <20201106035911.1942128-6-harshadshirwadkar@gmail.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog In-Reply-To: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> References: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org The on-disk superblock field sb->s_maxlen represents the total size of the journal including the fast commit area and is no more the max number of blocks available for a transaction. The maximum number of blocks available to a transaction is reduced by the number of fast commit blocks. So, this patch renames j_maxlen to j_total_len to better represent its intent. Also, it adds a function to calculate max number of bufs available for a transaction. Suggested-by: Jan Kara Signed-off-by: Harshad Shirwadkar --- fs/ext4/fsmap.c | 2 +- fs/ext4/super.c | 2 +- fs/jbd2/commit.c | 2 +- fs/jbd2/journal.c | 12 ++++++------ fs/jbd2/recovery.c | 6 +++--- fs/ocfs2/journal.c | 2 +- include/linux/jbd2.h | 9 +++++++-- 7 files changed, 20 insertions(+), 15 deletions(-) diff --git a/fs/ext4/fsmap.c b/fs/ext4/fsmap.c index b232c2767534..4c2a9fe30067 100644 --- a/fs/ext4/fsmap.c +++ b/fs/ext4/fsmap.c @@ -280,7 +280,7 @@ static int ext4_getfsmap_logdev(struct super_block *sb, struct ext4_fsmap *keys, /* Fabricate an rmap entry for the external log device. */ irec.fmr_physical = journal->j_blk_offset; - irec.fmr_length = journal->j_maxlen; + irec.fmr_length = journal->j_total_len; irec.fmr_owner = EXT4_FMR_OWN_LOG; irec.fmr_flags = 0; diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 804f9fc5bdbd..49982c230401 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -3976,7 +3976,7 @@ int ext4_calculate_overhead(struct super_block *sb) * loaded or not */ if (sbi->s_journal && !sbi->s_journal_bdev) - overhead += EXT4_NUM_B2C(sbi, sbi->s_journal->j_maxlen); + overhead += EXT4_NUM_B2C(sbi, sbi->s_journal->j_total_len); else if (ext4_has_feature_journal(sb) && !sbi->s_journal && j_inum) { /* j_inum for internal journal is non-zero */ j_inode = ext4_get_journal_inode(sb, j_inum); diff --git a/fs/jbd2/commit.c b/fs/jbd2/commit.c index fa688e163a80..ec516490cb35 100644 --- a/fs/jbd2/commit.c +++ b/fs/jbd2/commit.c @@ -801,7 +801,7 @@ void jbd2_journal_commit_transaction(journal_t *journal) if (first_block < journal->j_tail) freed += journal->j_last - journal->j_first; /* Update tail only if we free significant amount of space */ - if (freed < journal->j_maxlen / 4) + if (freed < jbd2_journal_get_max_txn_bufs(journal)) update_tail = 0; } J_ASSERT(commit_transaction->t_state == T_COMMIT); diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c index 0c7c42bd530f..c3c768248527 100644 --- a/fs/jbd2/journal.c +++ b/fs/jbd2/journal.c @@ -1348,7 +1348,7 @@ static journal_t *journal_init_common(struct block_device *bdev, journal->j_dev = bdev; journal->j_fs_dev = fs_dev; journal->j_blk_offset = start; - journal->j_maxlen = len; + journal->j_total_len = len; /* We need enough buffers to write out full descriptor block. */ n = journal->j_blocksize / jbd2_min_tag_size(); journal->j_wbufsize = n; @@ -1531,7 +1531,7 @@ static int journal_reset(journal_t *journal) journal->j_commit_sequence = journal->j_transaction_sequence - 1; journal->j_commit_request = journal->j_commit_sequence; - journal->j_max_transaction_buffers = journal->j_maxlen / 4; + journal->j_max_transaction_buffers = jbd2_journal_get_max_txn_bufs(journal); /* * As a special case, if the on-disk copy is already marked as needing @@ -1792,15 +1792,15 @@ static int journal_get_superblock(journal_t *journal) goto out; } - if (be32_to_cpu(sb->s_maxlen) < journal->j_maxlen) - journal->j_maxlen = be32_to_cpu(sb->s_maxlen); - else if (be32_to_cpu(sb->s_maxlen) > journal->j_maxlen) { + if (be32_to_cpu(sb->s_maxlen) < journal->j_total_len) + journal->j_total_len = be32_to_cpu(sb->s_maxlen); + else if (be32_to_cpu(sb->s_maxlen) > journal->j_total_len) { printk(KERN_WARNING "JBD2: journal file too short\n"); goto out; } if (be32_to_cpu(sb->s_first) == 0 || - be32_to_cpu(sb->s_first) >= journal->j_maxlen) { + be32_to_cpu(sb->s_first) >= journal->j_total_len) { printk(KERN_WARNING "JBD2: Invalid start block of journal: %u\n", be32_to_cpu(sb->s_first)); diff --git a/fs/jbd2/recovery.c b/fs/jbd2/recovery.c index eb2606133cd8..dc0694fcfcd1 100644 --- a/fs/jbd2/recovery.c +++ b/fs/jbd2/recovery.c @@ -74,8 +74,8 @@ static int do_readahead(journal_t *journal, unsigned int start) /* Do up to 128K of readahead */ max = start + (128 * 1024 / journal->j_blocksize); - if (max > journal->j_maxlen) - max = journal->j_maxlen; + if (max > journal->j_total_len) + max = journal->j_total_len; /* Do the readahead itself. We'll submit MAXBUF buffer_heads at * a time to the block device IO layer. */ @@ -134,7 +134,7 @@ static int jread(struct buffer_head **bhp, journal_t *journal, *bhp = NULL; - if (offset >= journal->j_maxlen) { + if (offset >= journal->j_total_len) { printk(KERN_ERR "JBD2: corrupted journal superblock\n"); return -EFSCORRUPTED; } diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c index b9a9d69dde7e..db52e843002a 100644 --- a/fs/ocfs2/journal.c +++ b/fs/ocfs2/journal.c @@ -877,7 +877,7 @@ int ocfs2_journal_init(struct ocfs2_journal *journal, int *dirty) goto done; } - trace_ocfs2_journal_init_maxlen(j_journal->j_maxlen); + trace_ocfs2_journal_init_maxlen(j_journal->j_total_len); *dirty = (le32_to_cpu(di->id1.journal1.ij_flags) & OCFS2_JOURNAL_DIRTY_FL); diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h index 1d5566af48ac..e0b6b53eae64 100644 --- a/include/linux/jbd2.h +++ b/include/linux/jbd2.h @@ -988,9 +988,9 @@ struct journal_s struct block_device *j_fs_dev; /** - * @j_maxlen: Total maximum capacity of the journal region on disk. + * @j_total_len: Total maximum capacity of the journal region on disk. */ - unsigned int j_maxlen; + unsigned int j_total_len; /** * @j_reserved_credits: @@ -1624,6 +1624,11 @@ int jbd2_wait_inode_data(journal_t *journal, struct jbd2_inode *jinode); int jbd2_fc_wait_bufs(journal_t *journal, int num_blks); int jbd2_fc_release_bufs(journal_t *journal); +static inline int jbd2_journal_get_max_txn_bufs(journal_t *journal) +{ + return (journal->j_total_len - journal->j_fc_wbufsize) / 4; +} + /* * is_journal_abort * From patchwork Fri Nov 6 03:58:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: harshad shirwadkar X-Patchwork-Id: 1395457 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=TvHtNbdM; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CS68h02Xhz9sVV for ; Fri, 6 Nov 2020 14:59:32 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726103AbgKFD7b (ORCPT ); Thu, 5 Nov 2020 22:59:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58310 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726057AbgKFD7b (ORCPT ); Thu, 5 Nov 2020 22:59:31 -0500 Received: from mail-pf1-x441.google.com (mail-pf1-x441.google.com [IPv6:2607:f8b0:4864:20::441]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5E53AC0613CF for ; Thu, 5 Nov 2020 19:59:31 -0800 (PST) Received: by mail-pf1-x441.google.com with SMTP id o129so117368pfb.1 for ; Thu, 05 Nov 2020 19:59:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6fwNDhGdv//4roZkSAw43VRISzu4dUK/cTfiUuUVoyY=; b=TvHtNbdMV03MVDvJTPn51zsjl9mH4DPVrcCnYIzxYS6MnaRuoJn70Tq8l5yTpG/qSp OdHc7oP4h9+6bhHCa3qW4qqLmXghfh/u71i5Q9pGAdeZNVX7e84zG4uCib8VG2jc657z Qp/pifGmf+T4zHDXGlnXcOE0D0fc7MuqP0yK2K8T658p7XFQcJewovQ54uBBWhFC5TG8 ocLrccgxbv4GxLWo3/H6c/MDO0hUa+WHbi5AyUQ+UQrhz1mUoxc5W+oxpJyreK4j6GSe ksqplgwKp/s/BUwgFQ4OTa76Picd+mM8fFftxggmzQA/mE/1s8zqZ9eGJBWunSDd5Bin cC7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6fwNDhGdv//4roZkSAw43VRISzu4dUK/cTfiUuUVoyY=; b=kxotawMhZCUtFtJo0dkwuLzyI7UHXp2YX0nWNv8yPua0nUpd6ZjS2WvL8OnQqOQRyY /jkw7/0c90WLudTTTHIZwQ32KNnCuATteIlRzrMaCDmCY95Eg/gvfG+Y14Z+niaFJR3+ jQyLtrNRdPUjn0Qm0+Xf1COcK3TrvyhVTYny3hayKjHDw5p6u19KmdmjvWkqem7ZZe0o q5L5qCr5NHgpPbSv68Kgf7+h+k+M6OGXQb4mvLuTHQ518jYM5OIF2zf6n95IGZc/Hm/p xN9QuX0jFtvj1qEtfC/gV+C72HYWHg0USNMM9foRPK88YXgTQRvUGMxJtVBmM524XepK IopA== X-Gm-Message-State: AOAM531hgzbfxhf3I5pGI9oBIk2MC2QAVGKh6PidKU0lztAzrmNAipdh vicegDbvTKAlfrESl9dGKGqqFnAGNbQ= X-Google-Smtp-Source: ABdhPJwLTuS5q6H5D28oh2yHBMqt0/CxSJPYTuqox47HN/Q2ojiM95f5JyF3n2PbBns+HTRXAsQseQ== X-Received: by 2002:a17:90a:6882:: with SMTP id a2mr288487pjd.110.1604635170425; Thu, 05 Nov 2020 19:59:30 -0800 (PST) Received: from harshads-520.kir.corp.google.com ([2620:15c:17:10:a6ae:11ff:fe11:86a2]) by smtp.googlemail.com with ESMTPSA id z13sm3869429pgc.44.2020.11.05.19.59.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2020 19:59:29 -0800 (PST) From: Harshad Shirwadkar To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Harshad Shirwadkar , Jan Kara Subject: [PATCH v2 06/22] ext4: clean up the JBD2 API that initializes fast commits Date: Thu, 5 Nov 2020 19:58:55 -0800 Message-Id: <20201106035911.1942128-7-harshadshirwadkar@gmail.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog In-Reply-To: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> References: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org This patch removes jbd2_fc_init() API and its related functions to simplify enabling fast commits. With this change, the number of fast commit blocks to use is solely determined by the JBD2 layer. So, we move the default value for minimum number of fast commit blocks from ext4/fast_commit.h to include/linux/jbd2.h. However, whether or not to use fast commits is determined by the file system. The file system just sets the fast commit feature using jbd2_journal_set_features(). JBD2 layer then determines how many blocks to use for fast commits (based on the value found in the JBD2 superblock). Note that the JBD2 feature flag of fast commits is just an indication that there are fast commit blocks present on disk. It doesn't tell JBD2 layer about the intent of the file system of whether to it wants to use fast commit or not. That's why, we blindly clear the fast commit flag in journal_reset() after the recovery is done. Suggested-by: Jan Kara Signed-off-by: Harshad Shirwadkar --- fs/ext4/fast_commit.c | 14 ------- fs/ext4/fast_commit.h | 3 -- fs/ext4/super.c | 8 ++++ fs/jbd2/journal.c | 96 +++++++++++++++++++++++++------------------ include/linux/jbd2.h | 2 +- 5 files changed, 65 insertions(+), 58 deletions(-) diff --git a/fs/ext4/fast_commit.c b/fs/ext4/fast_commit.c index 9399e9cccb7e..bab60c5d5095 100644 --- a/fs/ext4/fast_commit.c +++ b/fs/ext4/fast_commit.c @@ -2091,8 +2091,6 @@ static int ext4_fc_replay(journal_t *journal, struct buffer_head *bh, void ext4_fc_init(struct super_block *sb, journal_t *journal) { - int num_fc_blocks; - /* * We set replay callback even if fast commit disabled because we may * could still have fast commit blocks that need to be replayed even if @@ -2102,18 +2100,6 @@ void ext4_fc_init(struct super_block *sb, journal_t *journal) if (!test_opt2(sb, JOURNAL_FAST_COMMIT)) return; journal->j_fc_cleanup_callback = ext4_fc_cleanup; - if (!buffer_uptodate(journal->j_sb_buffer) - && ext4_read_bh_lock(journal->j_sb_buffer, REQ_META | REQ_PRIO, - true)) { - ext4_msg(sb, KERN_ERR, "I/O error on journal"); - return; - } - num_fc_blocks = be32_to_cpu(journal->j_superblock->s_num_fc_blks); - if (jbd2_fc_init(journal, num_fc_blocks ? num_fc_blocks : - EXT4_NUM_FC_BLKS)) { - pr_warn("Error while enabling fast commits, turning off."); - ext4_clear_feature_fast_commit(sb); - } } const char *fc_ineligible_reasons[] = { diff --git a/fs/ext4/fast_commit.h b/fs/ext4/fast_commit.h index 140fbb6af19e..1d96e0ac8138 100644 --- a/fs/ext4/fast_commit.h +++ b/fs/ext4/fast_commit.h @@ -3,9 +3,6 @@ #ifndef __FAST_COMMIT_H__ #define __FAST_COMMIT_H__ -/* Number of blocks in journal area to allocate for fast commits */ -#define EXT4_NUM_FC_BLKS 256 - /* Fast commit tags */ #define EXT4_FC_TAG_ADD_RANGE 0x0001 #define EXT4_FC_TAG_DEL_RANGE 0x0002 diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 49982c230401..9d2fbeb0c9ea 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -4857,6 +4857,14 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent) goto failed_mount_wq; } + if (test_opt2(sb, JOURNAL_FAST_COMMIT) && + !jbd2_journal_set_features(EXT4_SB(sb)->s_journal, 0, 0, + JBD2_FEATURE_INCOMPAT_FAST_COMMIT)) { + ext4_msg(sb, KERN_ERR, + "Failed to set fast commit journal feature"); + goto failed_mount_wq; + } + /* We have now updated the journal if required, so we can * validate the data journaling mode. */ switch (test_opt(sb, DATA_FLAGS)) { diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c index c3c768248527..500152f0421a 100644 --- a/fs/jbd2/journal.c +++ b/fs/jbd2/journal.c @@ -1352,19 +1352,12 @@ static journal_t *journal_init_common(struct block_device *bdev, /* We need enough buffers to write out full descriptor block. */ n = journal->j_blocksize / jbd2_min_tag_size(); journal->j_wbufsize = n; + journal->j_fc_wbuf = NULL; journal->j_wbuf = kmalloc_array(n, sizeof(struct buffer_head *), GFP_KERNEL); if (!journal->j_wbuf) goto err_cleanup; - if (journal->j_fc_wbufsize > 0) { - journal->j_fc_wbuf = kmalloc_array(journal->j_fc_wbufsize, - sizeof(struct buffer_head *), - GFP_KERNEL); - if (!journal->j_fc_wbuf) - goto err_cleanup; - } - bh = getblk_unmovable(journal->j_dev, start, journal->j_blocksize); if (!bh) { pr_err("%s: Cannot get buffer for journal superblock\n", @@ -1378,23 +1371,11 @@ static journal_t *journal_init_common(struct block_device *bdev, err_cleanup: kfree(journal->j_wbuf); - kfree(journal->j_fc_wbuf); jbd2_journal_destroy_revoke(journal); kfree(journal); return NULL; } -int jbd2_fc_init(journal_t *journal, int num_fc_blks) -{ - journal->j_fc_wbufsize = num_fc_blks; - journal->j_fc_wbuf = kmalloc_array(journal->j_fc_wbufsize, - sizeof(struct buffer_head *), GFP_KERNEL); - if (!journal->j_fc_wbuf) - return -ENOMEM; - return 0; -} -EXPORT_SYMBOL(jbd2_fc_init); - /* jbd2_journal_init_dev and jbd2_journal_init_inode: * * Create a journal structure assigned some fixed set of disk blocks to @@ -1512,16 +1493,7 @@ static int journal_reset(journal_t *journal) } journal->j_first = first; - - if (jbd2_has_feature_fast_commit(journal) && - journal->j_fc_wbufsize > 0) { - journal->j_fc_last = last; - journal->j_last = last - journal->j_fc_wbufsize; - journal->j_fc_first = journal->j_last + 1; - journal->j_fc_off = 0; - } else { - journal->j_last = last; - } + journal->j_last = last; journal->j_head = journal->j_first; journal->j_tail = journal->j_first; @@ -1533,6 +1505,13 @@ static int journal_reset(journal_t *journal) journal->j_max_transaction_buffers = jbd2_journal_get_max_txn_bufs(journal); + /* + * Now that journal recovery is done, turn fast commits off here. This + * way, if fast commit was enabled before the crash but if now FS has + * disabled it, we don't enable fast commits. + */ + jbd2_clear_feature_fast_commit(journal); + /* * As a special case, if the on-disk copy is already marked as needing * no recovery (s_start == 0), then we can safely defer the superblock @@ -1872,6 +1851,7 @@ static int load_superblock(journal_t *journal) { int err; journal_superblock_t *sb; + int num_fc_blocks; err = journal_get_superblock(journal); if (err) @@ -1883,15 +1863,17 @@ static int load_superblock(journal_t *journal) journal->j_tail = be32_to_cpu(sb->s_start); journal->j_first = be32_to_cpu(sb->s_first); journal->j_errno = be32_to_cpu(sb->s_errno); + journal->j_last = be32_to_cpu(sb->s_maxlen); - if (jbd2_has_feature_fast_commit(journal) && - journal->j_fc_wbufsize > 0) { + if (jbd2_has_feature_fast_commit(journal)) { journal->j_fc_last = be32_to_cpu(sb->s_maxlen); - journal->j_last = journal->j_fc_last - journal->j_fc_wbufsize; + num_fc_blocks = be32_to_cpu(sb->s_num_fc_blks); + if (!num_fc_blocks) + num_fc_blocks = JBD2_MIN_FC_BLOCKS; + if (journal->j_last - num_fc_blocks >= JBD2_MIN_JOURNAL_BLOCKS) + journal->j_last = journal->j_fc_last - num_fc_blocks; journal->j_fc_first = journal->j_last + 1; journal->j_fc_off = 0; - } else { - journal->j_last = be32_to_cpu(sb->s_maxlen); } return 0; @@ -1954,9 +1936,6 @@ int jbd2_journal_load(journal_t *journal) */ journal->j_flags &= ~JBD2_ABORT; - if (journal->j_fc_wbufsize > 0) - jbd2_journal_set_features(journal, 0, 0, - JBD2_FEATURE_INCOMPAT_FAST_COMMIT); /* OK, we've finished with the dynamic journal bits: * reinitialise the dynamic contents of the superblock in memory * and reset them on disk. */ @@ -2040,8 +2019,7 @@ int jbd2_journal_destroy(journal_t *journal) jbd2_journal_destroy_revoke(journal); if (journal->j_chksum_driver) crypto_free_shash(journal->j_chksum_driver); - if (journal->j_fc_wbufsize > 0) - kfree(journal->j_fc_wbuf); + kfree(journal->j_fc_wbuf); kfree(journal->j_wbuf); kfree(journal); @@ -2116,6 +2094,37 @@ int jbd2_journal_check_available_features(journal_t *journal, unsigned long comp return 0; } +static int +jbd2_journal_initialize_fast_commit(journal_t *journal) +{ + journal_superblock_t *sb = journal->j_superblock; + unsigned long long num_fc_blks; + + num_fc_blks = be32_to_cpu(sb->s_num_fc_blks); + if (num_fc_blks == 0) + num_fc_blks = JBD2_MIN_FC_BLOCKS; + if (journal->j_last - num_fc_blks < JBD2_MIN_JOURNAL_BLOCKS) + return -ENOSPC; + + /* Are we called twice? */ + WARN_ON(journal->j_fc_wbuf != NULL); + journal->j_fc_wbuf = kmalloc_array(num_fc_blks, + sizeof(struct buffer_head *), GFP_KERNEL); + if (!journal->j_fc_wbuf) + return -ENOMEM; + + journal->j_fc_wbufsize = num_fc_blks; + journal->j_fc_last = journal->j_last; + journal->j_last = journal->j_fc_last - num_fc_blks; + journal->j_fc_first = journal->j_last + 1; + journal->j_fc_off = 0; + journal->j_free = journal->j_last - journal->j_first; + journal->j_max_transaction_buffers = + jbd2_journal_get_max_txn_bufs(journal); + + return 0; +} + /** * int jbd2_journal_set_features() - Mark a given journal feature in the superblock * @journal: Journal to act on. @@ -2159,6 +2168,13 @@ int jbd2_journal_set_features(journal_t *journal, unsigned long compat, sb = journal->j_superblock; + if (incompat & JBD2_FEATURE_INCOMPAT_FAST_COMMIT) { + if (jbd2_journal_initialize_fast_commit(journal)) { + pr_err("JBD2: Cannot enable fast commits.\n"); + return 0; + } + } + /* Load the checksum driver if necessary */ if ((journal->j_chksum_driver == NULL) && INCOMPAT_FEATURE_ON(JBD2_FEATURE_INCOMPAT_CSUM_V3)) { diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h index e0b6b53eae64..b2caf7bbd8e5 100644 --- a/include/linux/jbd2.h +++ b/include/linux/jbd2.h @@ -68,6 +68,7 @@ extern void *jbd2_alloc(size_t size, gfp_t flags); extern void jbd2_free(void *ptr, size_t size); #define JBD2_MIN_JOURNAL_BLOCKS 1024 +#define JBD2_MIN_FC_BLOCKS 256 #ifdef __KERNEL__ @@ -1614,7 +1615,6 @@ extern void __jbd2_journal_drop_transaction(journal_t *, transaction_t *); extern int jbd2_cleanup_journal_tail(journal_t *); /* Fast commit related APIs */ -int jbd2_fc_init(journal_t *journal, int num_fc_blks); int jbd2_fc_begin_commit(journal_t *journal, tid_t tid); int jbd2_fc_end_commit(journal_t *journal); int jbd2_fc_end_commit_fallback(journal_t *journal, tid_t tid); From patchwork Fri Nov 6 03:58:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: harshad shirwadkar X-Patchwork-Id: 1395458 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=jdX7b6XI; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CS68j38dWz9sTK for ; Fri, 6 Nov 2020 14:59:33 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726107AbgKFD7d (ORCPT ); Thu, 5 Nov 2020 22:59:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58314 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726057AbgKFD7c (ORCPT ); Thu, 5 Nov 2020 22:59:32 -0500 Received: from mail-pg1-x543.google.com (mail-pg1-x543.google.com [IPv6:2607:f8b0:4864:20::543]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7DAFAC0613CF for ; Thu, 5 Nov 2020 19:59:32 -0800 (PST) Received: by mail-pg1-x543.google.com with SMTP id f38so2943281pgm.2 for ; Thu, 05 Nov 2020 19:59:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=IxBA7QqEbwKIQCT5XwpBIZ8Ga7/Na7Ld9Hk+O1xgFsM=; b=jdX7b6XIp3b8jw5TP8wAhNjmTZ493aQftPdTQToDO74pDxfNYmpzVtTf3XKDQlUNvM mQwsVBtD/r+N39OPPRiSLrzUfXVK1SVAXuRhtvPbnXI9UiTqTTy9yIpgjpodtTEdz6P9 gbN0F+JUC1ucgksH5S8QoP5PolgVH8mhcF5g9HY0hC81kx+pjGdszP6ubCkth4evhEmE uVIe7b7gA4HZuAQYJDIXbHuUgGmvPjcmdNmgsvqAo8Q/10SMsCXgWeVrMCePjKFlIM/p 6sO0VaxP1yhYdnifN1uuNtnB2jScsDt2TuZpkxYhxHIkFNpOLUggQIeq0PWkHAKDbgaP 8SLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=IxBA7QqEbwKIQCT5XwpBIZ8Ga7/Na7Ld9Hk+O1xgFsM=; b=obnYT6zgZMyEwOOUekyIF7Ul7nFFoO7t+ZO5xrFyieo6CbptTPqhVlLZtOvpkRqmZK cEL4A2qrch9Dhz7MmnCXnuFbDfdQ2BghSycMFaCIWO/F1kx2HW+TXo/L2mciklKffzBh FgHYpfLzKrJDODSUYAa00vSskIy+o4B8Sqh/YsXfDzYD/pA6aEkSE+1Fc6WRPEhtSdgu sAQduFCVaJvAudtaSh8PGxnqdKpbzuWMXjObmQSm6aAIHQ3jq1hAjrrBlnNalHM/aaHN H/u7t/rd22O8WkaycIMowwQkdevT3vu4os7toG2aZO/VNTPMeWlJ8u8CO55N2OJKJaJD 5aZA== X-Gm-Message-State: AOAM5308wj/J91XYysdGpwxfSvNjgR5TAw/ypM+gFY2LUeuN5/ANH+Ce l18rHkEHyz9kNUeyQDBlmOojDLf3HdY= X-Google-Smtp-Source: ABdhPJwGV4GSoB/cll0kWd0mO0dIEpcBu/Sjz9S42emK7VI8gHViOhYvOZRiVxXiV9UJt89mmX3e3w== X-Received: by 2002:a17:90a:c596:: with SMTP id l22mr277725pjt.184.1604635171690; Thu, 05 Nov 2020 19:59:31 -0800 (PST) Received: from harshads-520.kir.corp.google.com ([2620:15c:17:10:a6ae:11ff:fe11:86a2]) by smtp.googlemail.com with ESMTPSA id z13sm3869429pgc.44.2020.11.05.19.59.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2020 19:59:30 -0800 (PST) From: Harshad Shirwadkar To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Harshad Shirwadkar Subject: [PATCH v2 07/22] jbd2: drop jbd2_fc_init documentation Date: Thu, 5 Nov 2020 19:58:56 -0800 Message-Id: <20201106035911.1942128-8-harshadshirwadkar@gmail.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog In-Reply-To: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> References: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Now that jbd2_fc_init is dropped, drop its docs too. Signed-off-by: Harshad Shirwadkar --- Documentation/filesystems/journalling.rst | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Documentation/filesystems/journalling.rst b/Documentation/filesystems/journalling.rst index 5a5f70b4063e..e18f90ffc6fd 100644 --- a/Documentation/filesystems/journalling.rst +++ b/Documentation/filesystems/journalling.rst @@ -136,10 +136,8 @@ Fast commits ~~~~~~~~~~~~ JBD2 to also allows you to perform file-system specific delta commits known as -fast commits. In order to use fast commits, you first need to call -:c:func:`jbd2_fc_init` and tell how many blocks at the end of journal -area should be reserved for fast commits. Along with that, you will also need -to set following callbacks that perform correspodning work: +fast commits. In order to use fast commits, you will need to set following +callbacks that perform correspodning work: `journal->j_fc_cleanup_cb`: Cleanup function called after every full commit and fast commit. From patchwork Fri Nov 6 03:58:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: harshad shirwadkar X-Patchwork-Id: 1395459 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=Mjx5mYz2; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CS68k3SJlz9sTK for ; Fri, 6 Nov 2020 14:59:34 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726111AbgKFD7e (ORCPT ); Thu, 5 Nov 2020 22:59:34 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58318 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726057AbgKFD7d (ORCPT ); Thu, 5 Nov 2020 22:59:33 -0500 Received: from mail-pg1-x544.google.com (mail-pg1-x544.google.com [IPv6:2607:f8b0:4864:20::544]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C89B5C0613CF for ; Thu, 5 Nov 2020 19:59:33 -0800 (PST) Received: by mail-pg1-x544.google.com with SMTP id u4so2920140pgr.9 for ; Thu, 05 Nov 2020 19:59:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=+dpW9aGydZxat/o5Z4t4XauKyo/y4/injR0tRIzqBBY=; b=Mjx5mYz2IgXj+FVjfXKbSazHlDtS6h+HoXFOnz8uJfaVtaIf+BCXYFEIjPpBi/Bcwz fzL5NjyysbJfPa/MtGpaxJgnTRdI1MDrwWcEzjGivsaV7raG79nXnofYBVAgQ6Uvgcky sgEbkEV8+EN12zOczku9B/1FOGLQbWPBPFrvtM5clH+oln7Gb+3I+kB5fHsDGLwzAzvF j+uXLyg1iTIzqeBrkabQEZOh7iQmpho6DWi3/2ullhsXCQXZ9MK+j1U4gJBrVQuPtzFB APzfuclun/dqfsFwDVG5Cjqza9dSZq31ZJUMhI45OdDWXEUFt0V2Inwk2Zy0bnbFINND X/7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=+dpW9aGydZxat/o5Z4t4XauKyo/y4/injR0tRIzqBBY=; b=qVSNsooYs38D8hoRTYVJc98o7ns8CwyZM27rz7LzjbS/pokATxn39Q19rg4vx7s3hw jgpFS1odGbiFNOonpuNrn/+2busAyiIa5FaRDik8JGYke257C4ScmPwud+DXYC51JVTx QnV12icX/ulChahYpsVdgqWixQDfYr7nWKKSFlFf4zngko+it234BRkeM/JF3UsHvnU/ vuj8eow96cZQhHXAVG74DZAdzC/6DjdcCTE65qnB3NTZzNIYGUS0i9kIZwv6eoVh7EjV gEQeglih1Qr69lfwtVl4R6lxkrxC5MVyUrGGJv2hYQFEWusIudrSg/QtT8uMVNrIGJ3Z zF0Q== X-Gm-Message-State: AOAM533feknd9gLq5cY97M3f4HMW0t/unZbRirE9fqQzEJvwfigL0R5s M9A2TegakB5LWkprC4EG8aUY3BTQDK4= X-Google-Smtp-Source: ABdhPJwNh4lO0E4sY0953wruH4JDVvOgkIax1VwliCwfB5PQTNMkmMjUsFA3v7gysATjb4w+cc4ggg== X-Received: by 2002:a17:90a:d104:: with SMTP id l4mr275044pju.194.1604635172993; Thu, 05 Nov 2020 19:59:32 -0800 (PST) Received: from harshads-520.kir.corp.google.com ([2620:15c:17:10:a6ae:11ff:fe11:86a2]) by smtp.googlemail.com with ESMTPSA id z13sm3869429pgc.44.2020.11.05.19.59.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2020 19:59:32 -0800 (PST) From: Harshad Shirwadkar To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Harshad Shirwadkar , Jan Kara Subject: [PATCH v2 08/22] jbd2: don't use state lock during commit path Date: Thu, 5 Nov 2020 19:58:57 -0800 Message-Id: <20201106035911.1942128-9-harshadshirwadkar@gmail.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog In-Reply-To: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> References: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Variables journal->j_fc_off, journal->j_fc_wbuf are accessed during commit path. Since today we allow only one process to perform a fast commit, there is no need take state lock before accessing these variables. This patch removes these locks and adds comments to describe this. Suggested-by: Jan Kara Signed-off-by: Harshad Shirwadkar --- fs/jbd2/journal.c | 6 ------ include/linux/jbd2.h | 10 ++++++---- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c index 500152f0421a..778ea50fc8d1 100644 --- a/fs/jbd2/journal.c +++ b/fs/jbd2/journal.c @@ -865,7 +865,6 @@ int jbd2_fc_get_buf(journal_t *journal, struct buffer_head **bh_out) int fc_off; *bh_out = NULL; - write_lock(&journal->j_state_lock); if (journal->j_fc_off + journal->j_fc_first < journal->j_fc_last) { fc_off = journal->j_fc_off; @@ -874,7 +873,6 @@ int jbd2_fc_get_buf(journal_t *journal, struct buffer_head **bh_out) } else { ret = -EINVAL; } - write_unlock(&journal->j_state_lock); if (ret) return ret; @@ -909,9 +907,7 @@ int jbd2_fc_wait_bufs(journal_t *journal, int num_blks) struct buffer_head *bh; int i, j_fc_off; - read_lock(&journal->j_state_lock); j_fc_off = journal->j_fc_off; - read_unlock(&journal->j_state_lock); /* * Wait in reverse order to minimize chances of us being woken up before @@ -939,9 +935,7 @@ int jbd2_fc_release_bufs(journal_t *journal) struct buffer_head *bh; int i, j_fc_off; - read_lock(&journal->j_state_lock); j_fc_off = journal->j_fc_off; - read_unlock(&journal->j_state_lock); /* * Wait in reverse order to minimize chances of us being woken up before diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h index b2caf7bbd8e5..5f0ef6380b0c 100644 --- a/include/linux/jbd2.h +++ b/include/linux/jbd2.h @@ -945,8 +945,9 @@ struct journal_s /** * @j_fc_off: * - * Number of fast commit blocks currently allocated. - * [j_state_lock]. + * Number of fast commit blocks currently allocated. Accessed only + * during fast commit. Currently only process can do fast commit, so + * this field is not protected by any lock. */ unsigned long j_fc_off; @@ -1109,8 +1110,9 @@ struct journal_s struct buffer_head **j_wbuf; /** - * @j_fc_wbuf: Array of fast commit bhs for - * jbd2_journal_commit_transaction. + * @j_fc_wbuf: Array of fast commit bhs for fast commit. Accessed only + * during a fast commit. Currently only process can do fast commit, so + * this field is not protected by any lock. */ struct buffer_head **j_fc_wbuf; From patchwork Fri Nov 6 03:58:58 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: harshad shirwadkar X-Patchwork-Id: 1395460 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=k5x56AOh; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CS68l5G50z9sTK for ; Fri, 6 Nov 2020 14:59:35 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726113AbgKFD7f (ORCPT ); Thu, 5 Nov 2020 22:59:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58326 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726057AbgKFD7f (ORCPT ); Thu, 5 Nov 2020 22:59:35 -0500 Received: from mail-pf1-x432.google.com (mail-pf1-x432.google.com [IPv6:2607:f8b0:4864:20::432]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 29039C0613CF for ; Thu, 5 Nov 2020 19:59:35 -0800 (PST) Received: by mail-pf1-x432.google.com with SMTP id x13so89497pfa.9 for ; Thu, 05 Nov 2020 19:59:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9gY7yrHwgSn7s6B+JgYra0UOR9/ZkGrAmkJazp1U9gg=; b=k5x56AOhADh/KZSv2VxVuqWBRO/p3M9rb+C/7jXwm4bBok91LzWffMT9cqfsONys9X GkjHgPFv1IpS+eMIgFonC4lO0ia2VihQgj4EVc4dpBdjqVCgBelOOmfAn/bCknzn90gk MUpqxUoLXzbpGENn3KY4znm9BkMfirzk8gTBy2SBnTkCCYgGiGermw/qvok7kJBKKrJh 9N+3RKIsG8kg98wZFzxlF5mEHBx6vsWEKDXkUeyEP5f1p25su7TxuIDuB0uuo0ZSwuVd 1KncDkoWJ4cKtXLn4JhA+fNMpxheV3D6YStd1oJZ+BV5ktjh384Ho9qooHF/5ufLUelR FIDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=9gY7yrHwgSn7s6B+JgYra0UOR9/ZkGrAmkJazp1U9gg=; b=js79El480lYyYaIah892MlXnPBAW0mdRCYgqKPNPsYU8qpx5j2uwnoP1z8ga6WbPXm u4G3zc19/ltPEGIY4foaXVjyJrNPEYzAnsvsDXMm7ClJqJk9VdZR8faMY3odkb0HGEPE 4Hhfdf/Nh+bsE57Mmf+sdkyyAcDz73hLG7cbJHOcyJsIu5LoHHex1pXX5EpSkcqdyWlj BuaB1ZUlkOkx/52KBkEBXylvCQs4l6jXMgMgdoiGX+LHS+HLQcfWvPHfSSAeWdJwq7Fi O1RXHMfYVVRboFsYjVQPCl2TIOegcg/+ZSZZf44JdFCE2WY5enp+9gznSEB9AWFErZM9 cI0w== X-Gm-Message-State: AOAM533e9YM+eW2TBQfEMx3pmeWpo/J6zzARouf8JgKxS2d5z+m1/oIN 6KQORCuFY+ZFP4orXHULlhp9MG7BEME= X-Google-Smtp-Source: ABdhPJypd2b7uhMaB2kdf/BHeUb4dQruAqXiBvucre91Yq1DqI2Ho7qBlwsgInxwwNL9JulfRgQpIQ== X-Received: by 2002:a17:90a:182:: with SMTP id 2mr253898pjc.21.1604635174237; Thu, 05 Nov 2020 19:59:34 -0800 (PST) Received: from harshads-520.kir.corp.google.com ([2620:15c:17:10:a6ae:11ff:fe11:86a2]) by smtp.googlemail.com with ESMTPSA id z13sm3869429pgc.44.2020.11.05.19.59.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2020 19:59:33 -0800 (PST) From: Harshad Shirwadkar To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Harshad Shirwadkar , Jan Kara Subject: [PATCH v2 09/22] jbd2: don't pass tid to jbd2_fc_end_commit_fallback() Date: Thu, 5 Nov 2020 19:58:58 -0800 Message-Id: <20201106035911.1942128-10-harshadshirwadkar@gmail.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog In-Reply-To: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> References: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org In jbd2_fc_end_commit_fallback(), we know which tid to commit. There's no need for caller to pass it. Suggested-by: Jan Kara Signed-off-by: Harshad Shirwadkar --- fs/ext4/fast_commit.c | 2 +- fs/jbd2/journal.c | 12 +++++++++--- include/linux/jbd2.h | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/fs/ext4/fast_commit.c b/fs/ext4/fast_commit.c index bab60c5d5095..e69c580fa91e 100644 --- a/fs/ext4/fast_commit.c +++ b/fs/ext4/fast_commit.c @@ -1143,7 +1143,7 @@ int ext4_fc_commit(journal_t *journal, tid_t commit_tid) "Fast commit ended with blks = %d, reason = %d, subtid - %d", nblks, reason, subtid); if (reason == EXT4_FC_REASON_FC_FAILED) - return jbd2_fc_end_commit_fallback(journal, commit_tid); + return jbd2_fc_end_commit_fallback(journal); if (reason == EXT4_FC_REASON_FC_START_FAILED || reason == EXT4_FC_REASON_INELIGIBLE) return jbd2_complete_transaction(journal, commit_tid); diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c index 778ea50fc8d1..59166e299cde 100644 --- a/fs/jbd2/journal.c +++ b/fs/jbd2/journal.c @@ -777,13 +777,19 @@ static int __jbd2_fc_end_commit(journal_t *journal, tid_t tid, bool fallback) int jbd2_fc_end_commit(journal_t *journal) { - return __jbd2_fc_end_commit(journal, 0, 0); + return __jbd2_fc_end_commit(journal, 0, false); } EXPORT_SYMBOL(jbd2_fc_end_commit); -int jbd2_fc_end_commit_fallback(journal_t *journal, tid_t tid) +int jbd2_fc_end_commit_fallback(journal_t *journal) { - return __jbd2_fc_end_commit(journal, tid, 1); + tid_t tid; + + read_lock(&journal->j_state_lock); + tid = journal->j_running_transaction ? + journal->j_running_transaction->t_tid : 0; + read_unlock(&journal->j_state_lock); + return __jbd2_fc_end_commit(journal, tid, true); } EXPORT_SYMBOL(jbd2_fc_end_commit_fallback); diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h index 5f0ef6380b0c..1c49fd62ff2e 100644 --- a/include/linux/jbd2.h +++ b/include/linux/jbd2.h @@ -1619,7 +1619,7 @@ extern int jbd2_cleanup_journal_tail(journal_t *); /* Fast commit related APIs */ int jbd2_fc_begin_commit(journal_t *journal, tid_t tid); int jbd2_fc_end_commit(journal_t *journal); -int jbd2_fc_end_commit_fallback(journal_t *journal, tid_t tid); +int jbd2_fc_end_commit_fallback(journal_t *journal); int jbd2_fc_get_buf(journal_t *journal, struct buffer_head **bh_out); int jbd2_submit_inode_data(struct jbd2_inode *jinode); int jbd2_wait_inode_data(journal_t *journal, struct jbd2_inode *jinode); From patchwork Fri Nov 6 03:58:59 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: harshad shirwadkar X-Patchwork-Id: 1395461 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=SJWQYKtg; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CS68n0wgJz9sTK for ; Fri, 6 Nov 2020 14:59:37 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726121AbgKFD7g (ORCPT ); Thu, 5 Nov 2020 22:59:36 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58330 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726057AbgKFD7g (ORCPT ); Thu, 5 Nov 2020 22:59:36 -0500 Received: from mail-pg1-x544.google.com (mail-pg1-x544.google.com [IPv6:2607:f8b0:4864:20::544]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8823AC0613CF for ; Thu, 5 Nov 2020 19:59:36 -0800 (PST) Received: by mail-pg1-x544.google.com with SMTP id f38so2943386pgm.2 for ; Thu, 05 Nov 2020 19:59:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=eBPI3ZBxhtZbNjIqwtwWd3sK+y4M9+V4X0Z1cP/Nej4=; b=SJWQYKtglTh6G16kGhSwZzOt6ycgDQZT+7ezJXe30V66lW+xA6/HvG2tBPcswbY9po Mue7DkOlUh4x5HtmI4XYM1Bd63BO3P04Sta/Cbdll3bxu8Xrw/PiiCDEyu6WrVgRFKEF 1AW1K4MdhY1oeKOfchqSQHQK23D7yn2HUx2p5NfJAOYT1U2QfrNBSsHUp211R6pGiKB0 FKJfppag5Bd1wZ5e1OWKeVdQOnvaEOjFC4Jq5NqFWprpDzFgJGKCBZ6y2A3QFc3XB/ez Ex2HTkc1rJkzTG0su6NTg0qehpPLo7//YEFZ4G9h9eHbnUFRAjdq0fwOWflHbJcZCoPx FyNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=eBPI3ZBxhtZbNjIqwtwWd3sK+y4M9+V4X0Z1cP/Nej4=; b=VJmUGej2/u0bCxvdNqZ9/wpMfcPeOg/FD3Zchi8OnvLQu5XrRY11YPtKAwsBYlaBJn 5tUXZ2HK6VSG4fMTTFz4Hj4+dJARFQYcaXk86iDoH4EuCzYUoy290g3tBJW23vrEUCZo M9c1we/X8pwuaoH6rD3I1t3Ut4KLdyS92doswLdu5txa+tSDVPaDYuXIzIYEKayPv5fl jPv56TK1HT16jh5BcvTDbnik0H04x0BqbACye2uSU0rqiU6djHA2LQG9wegqXmRTFqAX OfEA+A3Iz4al/6u9LGzLmm7ItIIzhVnvxTpPPgMyvlMKO+EGkZvS7nH8uTO8Il68Zq99 RvLQ== X-Gm-Message-State: AOAM533i+p6SRXttDK/p4nco6iRPiTchIg7zMV8tp+MM051G32yo4tsh 8AtiGxuNTj4wtLLXJGaMvHQJL1POTng= X-Google-Smtp-Source: ABdhPJyngnJlCFaufRngKSkNrCqYzwPnwOskra0uvT4JgPyxbfmyrxgZ/x3WWCRdTrNACOPZIIjVdQ== X-Received: by 2002:a17:90a:6e4:: with SMTP id k91mr243194pjk.207.1604635175717; Thu, 05 Nov 2020 19:59:35 -0800 (PST) Received: from harshads-520.kir.corp.google.com ([2620:15c:17:10:a6ae:11ff:fe11:86a2]) by smtp.googlemail.com with ESMTPSA id z13sm3869429pgc.44.2020.11.05.19.59.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2020 19:59:34 -0800 (PST) From: Harshad Shirwadkar To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Harshad Shirwadkar , Jan Kara Subject: [PATCH v2 10/22] jbd2: add todo for a fast commit performance optimization Date: Thu, 5 Nov 2020 19:58:59 -0800 Message-Id: <20201106035911.1942128-11-harshadshirwadkar@gmail.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog In-Reply-To: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> References: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Fast commit performance can be optimized if commit thread doesn't wait for ongoing fast commits to complete until the transaction enters T_FLUSH state. Document this optimization. Suggested-by: Jan Kara Signed-off-by: Harshad Shirwadkar --- fs/jbd2/commit.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/fs/jbd2/commit.c b/fs/jbd2/commit.c index ec516490cb35..b121d7d434c6 100644 --- a/fs/jbd2/commit.c +++ b/fs/jbd2/commit.c @@ -450,6 +450,15 @@ void jbd2_journal_commit_transaction(journal_t *journal) schedule(); write_lock(&journal->j_state_lock); finish_wait(&journal->j_fc_wait, &wait); + /* + * TODO: by blocking fast commits here, we are increasing + * fsync() latency slightly. Strictly speaking, we don't need + * to block fast commits until the transaction enters T_FLUSH + * state. So an optimization is possible where we block new fast + * commits here and wait for existing ones to complete + * just before we enter T_FLUSH. That way, the existing fast + * commits and this full commit can proceed parallely. + */ } write_unlock(&journal->j_state_lock); From patchwork Fri Nov 6 03:59:00 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: harshad shirwadkar X-Patchwork-Id: 1395462 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=dvVL/mdK; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CS68p5Z4sz9sVK for ; Fri, 6 Nov 2020 14:59:38 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726125AbgKFD7i (ORCPT ); Thu, 5 Nov 2020 22:59:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58336 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726057AbgKFD7i (ORCPT ); Thu, 5 Nov 2020 22:59:38 -0500 Received: from mail-pg1-x543.google.com (mail-pg1-x543.google.com [IPv6:2607:f8b0:4864:20::543]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2344DC0613CF for ; Thu, 5 Nov 2020 19:59:38 -0800 (PST) Received: by mail-pg1-x543.google.com with SMTP id z24so2938358pgk.3 for ; Thu, 05 Nov 2020 19:59:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Y4pHhz/vACRiu7SOP6so0FB0d0zwPKfuxvqxVl7ZmMc=; b=dvVL/mdKWjQ4ngHqTxXsCyC1CvJX91rO5m8gkdDmwXIAD8aUbpejQ2W48TPQWKwMu5 zzE02ewxdnOKTbmQlqP5Yf2/OgBrnS+JLzaCGHljng5EYz5VMz0Ar8UnkO0NXwAuRYtG 5YtAA1aFUYcJmbZNsc3caOMutK8qeg2eF3WDoXD8QN/4ErKxK/AGANcs5KyzJNrlJUUc dP0USgmszXfaV+8BGAUdqSovJu86lpxUf4fHGTyAn68Hzi3DOHQ9yFWRVjgREb8S/CjZ Y45Ck6OQbYEHOFgmx1smLCmeGvT1nu3nGfC2KdABNXtTcE1LgVNu9yOuWrF91HNIiAeE kYgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Y4pHhz/vACRiu7SOP6so0FB0d0zwPKfuxvqxVl7ZmMc=; b=AkWONVpeCYJgJndNiWu+INXMrgNp/oGqZu8xVdacPLpXoRRFWURoS77RcxC/ZEiMHw lfX+yLTP/O4YbuObjUp7P+6+SOgoKR74L7JclU0xTZtOlzUaPHYxDRT0ITYn+JT6lMn3 vtN+nw5k2ggWRAJdCxWxME8G5xp86Zl6fXN3nbdTtOPS6w0otFHuhaDF2ufV9M3xpOSn uNPS8BIpjtAVWxDt+hOyqvv3uJz1auWfTQj+Y8QmLUWBP6xAon510LtGgy2VFfMKtnBq hnjWUDFkP1iDK9e5kg3MECcYMwCfP1snAdfEvcZBycrHPTpoaHLA3THuECD25Hp4rFly CEEQ== X-Gm-Message-State: AOAM531UngJ401O+jhAckVkzwyA8cBxDY96MqftYrk3mxx0+jWOo2+X+ A0C9rH8KzyPC3wXjXM3tYKoIoAB3X88= X-Google-Smtp-Source: ABdhPJxBbKQ5pbna5v5O6xavxMxtz/Qvd7TqDHByfArzaYGyTZ379Txqg7nnnbM8o6qfhuejlvB5Og== X-Received: by 2002:a17:90a:7886:: with SMTP id x6mr260660pjk.21.1604635177308; Thu, 05 Nov 2020 19:59:37 -0800 (PST) Received: from harshads-520.kir.corp.google.com ([2620:15c:17:10:a6ae:11ff:fe11:86a2]) by smtp.googlemail.com with ESMTPSA id z13sm3869429pgc.44.2020.11.05.19.59.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2020 19:59:36 -0800 (PST) From: Harshad Shirwadkar To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Harshad Shirwadkar , Jan Kara Subject: [PATCH v2 11/22] jbd2: don't touch buffer state until it is filled Date: Thu, 5 Nov 2020 19:59:00 -0800 Message-Id: <20201106035911.1942128-12-harshadshirwadkar@gmail.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog In-Reply-To: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> References: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Fast commit buffers should be filled in before toucing their state. Remove code that sets buffer state as dirty before the buffer is passed to the file system. Suggested-by: Jan Kara Signed-off-by: Harshad Shirwadkar --- fs/jbd2/journal.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c index 59166e299cde..b5fbcd1b444c 100644 --- a/fs/jbd2/journal.c +++ b/fs/jbd2/journal.c @@ -891,11 +891,7 @@ int jbd2_fc_get_buf(journal_t *journal, struct buffer_head **bh_out) if (!bh) return -ENOMEM; - lock_buffer(bh); - clear_buffer_uptodate(bh); - set_buffer_dirty(bh); - unlock_buffer(bh); journal->j_fc_wbuf[fc_off] = bh; *bh_out = bh; From patchwork Fri Nov 6 03:59:01 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: harshad shirwadkar X-Patchwork-Id: 1395463 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=ikzFqZ67; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CS68r4sYzz9sTK for ; Fri, 6 Nov 2020 14:59:40 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726126AbgKFD7k (ORCPT ); Thu, 5 Nov 2020 22:59:40 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58344 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725895AbgKFD7k (ORCPT ); Thu, 5 Nov 2020 22:59:40 -0500 Received: from mail-pg1-x541.google.com (mail-pg1-x541.google.com [IPv6:2607:f8b0:4864:20::541]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0CCC6C0613CF for ; Thu, 5 Nov 2020 19:59:40 -0800 (PST) Received: by mail-pg1-x541.google.com with SMTP id g12so2925799pgm.8 for ; Thu, 05 Nov 2020 19:59:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=LJY3WKGp9OTdpkNgdRqrVZrXPonjAKm68Wiz5CNPD5Y=; b=ikzFqZ67HRe1udZrt3dgsYACa87Fb9mytvsZCxjp8Hr4RqfmrNK5+GPneWmkznwsNM xxTMkd/TtWOGBBA+nCPG6H2RzhwbNYeG6/f8ghxIzxxjz7vR72dOptBmgsZliT0f3D4j 2SXNEQMPLpk62GJxEWifHilh9PkC7BZLcGRHCWv4ZaKY7VxlLOBKaIrGB/mieb3FBdal DMmgh/oqzFTE6lJ04kWRa5dMZrj5ENyaJqzwBfHwXg1HKOqFq20RlhhlKfBC6Et4ysyx ewXWJprGDdXAdKiRWlFEIPtHiKV3hLSHI8zkhX5y+ZhJXSssU8Cpn+R2Lh2TNx7HXfSl sQJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LJY3WKGp9OTdpkNgdRqrVZrXPonjAKm68Wiz5CNPD5Y=; b=BcicNOyvqRvarbZWXiIPmtaWgE/gEWrs/Z0s3e2pZyCt6TKJbL4bWSmCURKsBCDmJp siOTuvRkrh4B2xzMJvC9XhBwev0unDVsh24LWFf9QVapuGfxQOGGoe3bIIPrKpvz95NA KCLkb2DVMWNQ8qwTxHBsACduo5cHCM0qG3bd5kU5X54vt1KLJQHxkHpL0FEIITGDgF+C 7G79ZZIDP4lTkVy6uZm3nJAob8nb+4kK45O05qTaho8+SebMZTPkDbFTGnOOfJGy9voc Y6Bj8QhwQkOMIlhr+dcWnqBvg5r88m/tSvwii/sHAPSe1FfHWd+qM3k/gKGqG++2LEhM P71g== X-Gm-Message-State: AOAM532fo9F0LrPTDFywJohI2Sq5UKtei4Y9WYEErPFpVtNBH/S3VOX+ jaWFx5wQS6CvR4PwvZjgQmFOexcxaaY= X-Google-Smtp-Source: ABdhPJwQjgUvzWQNqNzhgZRX83+CzHlmBc/h5z2T/b5zUUykylgeqWfZrLyQTn+psVXhEWuR/nmRiw== X-Received: by 2002:a17:90a:c257:: with SMTP id d23mr293131pjx.46.1604635179036; Thu, 05 Nov 2020 19:59:39 -0800 (PST) Received: from harshads-520.kir.corp.google.com ([2620:15c:17:10:a6ae:11ff:fe11:86a2]) by smtp.googlemail.com with ESMTPSA id z13sm3869429pgc.44.2020.11.05.19.59.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2020 19:59:37 -0800 (PST) From: Harshad Shirwadkar To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Harshad Shirwadkar Subject: [PATCH v2 12/22] jbd2: don't read journal->j_commit_sequence without taking a lock Date: Thu, 5 Nov 2020 19:59:01 -0800 Message-Id: <20201106035911.1942128-13-harshadshirwadkar@gmail.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog In-Reply-To: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> References: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Take journal state lock before reading journal->j_commit_sequence. Signed-off-by: Harshad Shirwadkar --- fs/jbd2/journal.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c index b5fbcd1b444c..f7ebf6ef69af 100644 --- a/fs/jbd2/journal.c +++ b/fs/jbd2/journal.c @@ -734,10 +734,12 @@ int jbd2_fc_begin_commit(journal_t *journal, tid_t tid) if (!journal->j_stats.ts_tid) return -EINVAL; - if (tid <= journal->j_commit_sequence) + write_lock(&journal->j_state_lock); + if (tid <= journal->j_commit_sequence) { + write_unlock(&journal->j_state_lock); return -EALREADY; + } - write_lock(&journal->j_state_lock); if (journal->j_flags & JBD2_FULL_COMMIT_ONGOING || (journal->j_flags & JBD2_FAST_COMMIT_ONGOING)) { DEFINE_WAIT(wait); From patchwork Fri Nov 6 03:59:02 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: harshad shirwadkar X-Patchwork-Id: 1395464 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=lETZpOTd; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CS68s5znrz9sTK for ; Fri, 6 Nov 2020 14:59:41 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726128AbgKFD7l (ORCPT ); Thu, 5 Nov 2020 22:59:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58348 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725895AbgKFD7l (ORCPT ); Thu, 5 Nov 2020 22:59:41 -0500 Received: from mail-pg1-x544.google.com (mail-pg1-x544.google.com [IPv6:2607:f8b0:4864:20::544]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 48484C0613CF for ; Thu, 5 Nov 2020 19:59:41 -0800 (PST) Received: by mail-pg1-x544.google.com with SMTP id x13so2928907pgp.7 for ; Thu, 05 Nov 2020 19:59:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=0WCR0myZmWLzn79EtZxHkg0PeRjnICWyXLz98JpoUvk=; b=lETZpOTdGzFDc+9Dgtt4OGb0He6cYhVytIhYWeUHLMJMVCaNsg8K8dw9mPlgvvrvdI TYXexq2YOxWo6Atq6Sc/OfYhHzMnGiiyuUJRMAuAu95GwI9nXGAfrOPP8pwVMc3rp5gz QEkUv8x33Pi8uAB5136LeeNdavprjO9/8S4AcHTzvpqsxu1jncXbqpqe7ng9ysvs4FKF trBsi2LVZqKN1UZnDuSc75VQ8pcQlvRxOB5uzDrcbTDTmOH3RTnXF07khUQQq6jl0ax/ xqWJuq2xUBkqfb6fFiUU9nqzdMifLWmBGCHmyIuITG2FQqlVw9OyxqGh1XQtKu15m44R 3mWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=0WCR0myZmWLzn79EtZxHkg0PeRjnICWyXLz98JpoUvk=; b=bjOZ0832zQM75a7nMrLnqHl5aTzgH9Gg4PwY9JQlLWAi8lazJ5VNwW9XucseiZyts1 z+ZeIc0yNpHzEj4ZZWGej7uZ6sbD/FtpnbDWbvCa5KfDLbVQBftCGzj9hnHJA6ZhEsWC Ca5vk5TNPR0PvxMpaYWN1kZx9Olq2qe/2n6rXW69SH88Ie0QYHFY0qTXycnJOqHaT6Uo j46+bz80zfxzg6tTmQd+NLphNfRJF5EU9X0I0XTLmThbYR8cenGsSGssFxKsEczo+ahk 3oytfiNtktve8vTwUdlc2Aq3rTfkoc/V1hUe+K2DtbvXR1ggw2G9KhOw0cvgu4gbEX5T ePYw== X-Gm-Message-State: AOAM530+2dggOmpuI/WiOET9ZbCcOv8YjgrtCd2fQEszDQN4BXaZwXNv PPffOpyeCtWwYLjL58h1vLPH9B98VuY= X-Google-Smtp-Source: ABdhPJwW/ocnMJfTc/j2XxD7u4joFLhlB7qHnfFiVUMztLyuwSurbUSkfFLSXr9+3AkkX2Lj2KkSlA== X-Received: by 2002:a17:90a:fd8d:: with SMTP id cx13mr288999pjb.138.1604635180467; Thu, 05 Nov 2020 19:59:40 -0800 (PST) Received: from harshads-520.kir.corp.google.com ([2620:15c:17:10:a6ae:11ff:fe11:86a2]) by smtp.googlemail.com with ESMTPSA id z13sm3869429pgc.44.2020.11.05.19.59.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2020 19:59:39 -0800 (PST) From: Harshad Shirwadkar To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Harshad Shirwadkar , Jan Kara Subject: [PATCH v2 13/22] ext4: dedpulicate the code to wait on inode that's being committed Date: Thu, 5 Nov 2020 19:59:02 -0800 Message-Id: <20201106035911.1942128-14-harshadshirwadkar@gmail.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog In-Reply-To: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> References: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org This patch removes the deduplicates the code that implements waiting on inode that's being committed. That code is moved into a new function. Suggested-by: Jan Kara Signed-off-by: Harshad Shirwadkar --- fs/ext4/fast_commit.c | 61 +++++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 34 deletions(-) diff --git a/fs/ext4/fast_commit.c b/fs/ext4/fast_commit.c index e69c580fa91e..fc5a5e6a581d 100644 --- a/fs/ext4/fast_commit.c +++ b/fs/ext4/fast_commit.c @@ -155,6 +155,30 @@ void ext4_fc_init_inode(struct inode *inode) ei->i_fc_committed_subtid = 0; } +/* This function must be called with sbi->s_fc_lock held. */ +static void ext4_fc_wait_committing_inode(struct inode *inode) +{ + wait_queue_head_t *wq; + struct ext4_inode_info *ei = EXT4_I(inode); + +#if (BITS_PER_LONG < 64) + DEFINE_WAIT_BIT(wait, &ei->i_state_flags, + EXT4_STATE_FC_COMMITTING); + wq = bit_waitqueue(&ei->i_state_flags, + EXT4_STATE_FC_COMMITTING); +#else + DEFINE_WAIT_BIT(wait, &ei->i_flags, + EXT4_STATE_FC_COMMITTING); + wq = bit_waitqueue(&ei->i_flags, + EXT4_STATE_FC_COMMITTING); +#endif + lockdep_assert_held(&EXT4_SB(inode->i_sb)->s_fc_lock); + prepare_to_wait(wq, &wait.wq_entry, TASK_UNINTERRUPTIBLE); + spin_unlock(&EXT4_SB(inode->i_sb)->s_fc_lock); + schedule(); + finish_wait(wq, &wait.wq_entry); +} + /* * Inform Ext4's fast about start of an inode update * @@ -176,22 +200,7 @@ void ext4_fc_start_update(struct inode *inode) goto out; if (ext4_test_inode_state(inode, EXT4_STATE_FC_COMMITTING)) { - wait_queue_head_t *wq; -#if (BITS_PER_LONG < 64) - DEFINE_WAIT_BIT(wait, &ei->i_state_flags, - EXT4_STATE_FC_COMMITTING); - wq = bit_waitqueue(&ei->i_state_flags, - EXT4_STATE_FC_COMMITTING); -#else - DEFINE_WAIT_BIT(wait, &ei->i_flags, - EXT4_STATE_FC_COMMITTING); - wq = bit_waitqueue(&ei->i_flags, - EXT4_STATE_FC_COMMITTING); -#endif - prepare_to_wait(wq, &wait.wq_entry, TASK_UNINTERRUPTIBLE); - spin_unlock(&EXT4_SB(inode->i_sb)->s_fc_lock); - schedule(); - finish_wait(wq, &wait.wq_entry); + ext4_fc_wait_committing_inode(inode); goto restart; } out: @@ -234,26 +243,10 @@ void ext4_fc_del(struct inode *inode) } if (ext4_test_inode_state(inode, EXT4_STATE_FC_COMMITTING)) { - wait_queue_head_t *wq; -#if (BITS_PER_LONG < 64) - DEFINE_WAIT_BIT(wait, &ei->i_state_flags, - EXT4_STATE_FC_COMMITTING); - wq = bit_waitqueue(&ei->i_state_flags, - EXT4_STATE_FC_COMMITTING); -#else - DEFINE_WAIT_BIT(wait, &ei->i_flags, - EXT4_STATE_FC_COMMITTING); - wq = bit_waitqueue(&ei->i_flags, - EXT4_STATE_FC_COMMITTING); -#endif - prepare_to_wait(wq, &wait.wq_entry, TASK_UNINTERRUPTIBLE); - spin_unlock(&EXT4_SB(inode->i_sb)->s_fc_lock); - schedule(); - finish_wait(wq, &wait.wq_entry); + ext4_fc_wait_committing_inode(inode); goto restart; } - if (!list_empty(&ei->i_fc_list)) - list_del_init(&ei->i_fc_list); + list_del_init(&ei->i_fc_list); spin_unlock(&EXT4_SB(inode->i_sb)->s_fc_lock); } From patchwork Fri Nov 6 03:59:03 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: harshad shirwadkar X-Patchwork-Id: 1395465 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=cNxSCa0b; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CS68v3BDkz9sTK for ; Fri, 6 Nov 2020 14:59:43 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726134AbgKFD7n (ORCPT ); Thu, 5 Nov 2020 22:59:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58352 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725895AbgKFD7m (ORCPT ); Thu, 5 Nov 2020 22:59:42 -0500 Received: from mail-pl1-x644.google.com (mail-pl1-x644.google.com [IPv6:2607:f8b0:4864:20::644]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D8847C0613CF for ; Thu, 5 Nov 2020 19:59:42 -0800 (PST) Received: by mail-pl1-x644.google.com with SMTP id t22so47152plr.9 for ; Thu, 05 Nov 2020 19:59:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3IcyYOcaSosD0gvb90SB7f2p/tRWOSa7pkWZ526W3rs=; b=cNxSCa0brVl4CL91zpBQTGP33eHSpY7Tql7O4HT+vtqe1vsCOUcac4j+fVuUZhlVzZ dINCdAWeY2AKJe9JWtd2h9dq5bKBZV8G7t5KCm0Wi8p+Cy76jyEkwZ+g44RoM5uki03Q 5mLZ6vZ6EtFI8Rdyk5Z81N0D+6EGF5W/YGIu1ZiolK/uKeguI3pLrlmUGb3gGnO7eSSF 6jxPO9FPaiyTkQOFgLl1TmMAeG4jDFeayOiZyohge+ixFYYOl7Zi+zFEcuNipjB4GISX mFwvosb1sn1wn26VuTnvRquv6EFbQ/88jTOk0rAHtqpGnFL4nOQWbyl2jObnENz8rjuT lk2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3IcyYOcaSosD0gvb90SB7f2p/tRWOSa7pkWZ526W3rs=; b=W90lWjk9O2xKGdsybG2wMDo8KtMkIypbLwVUClevivhSVEHYnNXBfVUi6bXulrOHJX 8bFkZjos31Xpfe4m3bxYGwkYYHXExwCcZFqyGUkILnwJVSYmjKE+6edZRBHbUv9T8ibh I9gd75N6mDJiHJewpg9ZfYX//se/PozAwnvIJOeyD0NXhlNPCHqsk+2ggPu02Qt+dkNT Gj/pv7kNGEhFD2HZgKRnp6IdXTx+9dUqX0q7PlMOR1o1wq41UZnUNxDfHhXgwXdPK8y1 kwkh+zni4YVz1wrAp6tvFpLEE5oDZwDH36Jdj/X2VTtmdAg2v6bNDMT9QoOt9YpdtaD2 setA== X-Gm-Message-State: AOAM533FxwuCjihUpdcXIpThkdiS4cgFDz3eqeB0rdFzDRJSVgxzL2UJ XnZ3He0ZDKmTuWS0C/2RLOeI6ZCxp8A= X-Google-Smtp-Source: ABdhPJy/PIcTrVlONJNK6aS0pCGQ32g7XVKeVRzDy6uu4s24Z8IaBAgrOE5a7sH5pcG77iF/BS4Npw== X-Received: by 2002:a17:902:780f:b029:d6:3413:9fe8 with SMTP id p15-20020a170902780fb02900d634139fe8mr207227pll.46.1604635181979; Thu, 05 Nov 2020 19:59:41 -0800 (PST) Received: from harshads-520.kir.corp.google.com ([2620:15c:17:10:a6ae:11ff:fe11:86a2]) by smtp.googlemail.com with ESMTPSA id z13sm3869429pgc.44.2020.11.05.19.59.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2020 19:59:40 -0800 (PST) From: Harshad Shirwadkar To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Harshad Shirwadkar Subject: [PATCH v2 14/22] ext4: fix code documentatioon Date: Thu, 5 Nov 2020 19:59:03 -0800 Message-Id: <20201106035911.1942128-15-harshadshirwadkar@gmail.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog In-Reply-To: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> References: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Add a TODO to remember fixing REQ_FUA | REQ_PREFLUSH for fast commit buffers. Also, fix a typo in top level comment in fast_commit.c Signed-off-by: Harshad Shirwadkar --- fs/ext4/fast_commit.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/ext4/fast_commit.c b/fs/ext4/fast_commit.c index fc5a5e6a581d..639b2a308c7b 100644 --- a/fs/ext4/fast_commit.c +++ b/fs/ext4/fast_commit.c @@ -83,7 +83,7 @@ * * Atomicity of commits * -------------------- - * In order to gaurantee atomicity during the commit operation, fast commit + * In order to guarantee atomicity during the commit operation, fast commit * uses "EXT4_FC_TAG_TAIL" tag that marks a fast commit as complete. Tail * tag contains CRC of the contents and TID of the transaction after which * this fast commit should be applied. Recovery code replays fast commit @@ -542,6 +542,7 @@ static void ext4_fc_submit_bh(struct super_block *sb) int write_flags = REQ_SYNC; struct buffer_head *bh = EXT4_SB(sb)->s_fc_bh; + /* TODO: REQ_FUA | REQ_PREFLUSH is unnecessarily expensive. */ if (test_opt(sb, BARRIER)) write_flags |= REQ_FUA | REQ_PREFLUSH; lock_buffer(bh); From patchwork Fri Nov 6 03:59:04 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: harshad shirwadkar X-Patchwork-Id: 1395466 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=nYSaqO0s; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CS68w5PXdz9sTK for ; Fri, 6 Nov 2020 14:59:44 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726139AbgKFD7o (ORCPT ); Thu, 5 Nov 2020 22:59:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58360 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725895AbgKFD7o (ORCPT ); Thu, 5 Nov 2020 22:59:44 -0500 Received: from mail-pl1-x643.google.com (mail-pl1-x643.google.com [IPv6:2607:f8b0:4864:20::643]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 28E89C0613CF for ; Thu, 5 Nov 2020 19:59:44 -0800 (PST) Received: by mail-pl1-x643.google.com with SMTP id 1so59525ple.2 for ; Thu, 05 Nov 2020 19:59:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=o1hNTWuZXMab/Dt1l/MXT88sMTPz21/OUhYLzdfGl2o=; b=nYSaqO0s6iTf0gyDGxLQCZj5/WxOoPnK6uDaGZ8Z0Ijdh3T8iFlBNbfr8R4E2ZBjTq r5bG0U3t3nHpbC0E2XHP0H1l3QGuuqW74fnLqKqKlwL8OuF6gY98B7k3i5C3HgEWqWqa DDTFDRZiL4YOi/cqZAtDRIblk8TMZkyGfsowQa0iNGwSRfeMvwHKn96pZPrtZCMzTYlS W45Znig+1Non1zJ52o9cjkuoHxOhUBL3fOOhpOHJ/yiv5Cn4S3DtJJa3r0pNImGb7/Dq JX2vPNH4R/cS+H10VxUFRO9pyYKsAsce1/xrpX0dsKp2Sdyq2VJZ+bOgoRAQnpMSEFMG YBuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=o1hNTWuZXMab/Dt1l/MXT88sMTPz21/OUhYLzdfGl2o=; b=MFDUwe7Bbq7/yfPDbXRo0QmPrCOCwTVt1p+Fse0rIrvQH4C5nQ/y6bjZkxh0ZkCwr4 BYhAwYgratFcc97+pNOklS3RiZtumweyPe9RcbJR3eA/inhIb96QzCiVNW6TlF7Uwt5I Qi+emf4POMKVukJYIjoIWjTdjyeipr8ZujehwgHdyEy9bQjjXYivyOTaLoIxprf92DWV mXSVPIDa+v+87Z9b373yavq1jisUQGEIYpTX+d9sYQIj9HZQTKB3IP4FVscPqGvUEx7p 1gg1iLeipA3sGCuQzIKZ3s4JL2ekiyHFNJb7BhaMcb3GqPsEXtVU2WUdNlRfiy1pqKq2 Zgnw== X-Gm-Message-State: AOAM533QlYtLtET0WaCKmzxFqtpAbrC48Y6hSZZXNT9mPtkjUpwPCufp GpJp6SEHl1Aa+gmWqSaP+UZptMznucY= X-Google-Smtp-Source: ABdhPJySxTWUIY8nrNpypTu6tJu76tDGIDiqdUfUYk/9PerDduhH5xR8QyA54XhrOT1VwoYbhFpF2Q== X-Received: by 2002:a17:902:934b:b029:d4:e4c7:26f5 with SMTP id g11-20020a170902934bb02900d4e4c726f5mr205689plp.60.1604635183336; Thu, 05 Nov 2020 19:59:43 -0800 (PST) Received: from harshads-520.kir.corp.google.com ([2620:15c:17:10:a6ae:11ff:fe11:86a2]) by smtp.googlemail.com with ESMTPSA id z13sm3869429pgc.44.2020.11.05.19.59.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2020 19:59:42 -0800 (PST) From: Harshad Shirwadkar To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Harshad Shirwadkar , Jan Kara Subject: [PATCH v2 15/22] ext4: mark buf dirty before submitting fast commit buffer Date: Thu, 5 Nov 2020 19:59:04 -0800 Message-Id: <20201106035911.1942128-16-harshadshirwadkar@gmail.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog In-Reply-To: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> References: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Mark the fast commit buffer as dirty before submission. Suggested-by: Jan Kara Signed-off-by: Harshad Shirwadkar --- fs/ext4/fast_commit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/ext4/fast_commit.c b/fs/ext4/fast_commit.c index 639b2a308c7b..05e6e76a7663 100644 --- a/fs/ext4/fast_commit.c +++ b/fs/ext4/fast_commit.c @@ -546,7 +546,7 @@ static void ext4_fc_submit_bh(struct super_block *sb) if (test_opt(sb, BARRIER)) write_flags |= REQ_FUA | REQ_PREFLUSH; lock_buffer(bh); - clear_buffer_dirty(bh); + set_buffer_dirty(bh); set_buffer_uptodate(bh); bh->b_end_io = ext4_end_buffer_io_sync; submit_bh(REQ_OP_WRITE, write_flags, bh); From patchwork Fri Nov 6 03:59:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: harshad shirwadkar X-Patchwork-Id: 1395467 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=rh+KRaOG; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CS68y0PD6z9sTK for ; Fri, 6 Nov 2020 14:59:46 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726075AbgKFD7p (ORCPT ); Thu, 5 Nov 2020 22:59:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58364 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725895AbgKFD7p (ORCPT ); Thu, 5 Nov 2020 22:59:45 -0500 Received: from mail-pf1-x443.google.com (mail-pf1-x443.google.com [IPv6:2607:f8b0:4864:20::443]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6EA82C0613CF for ; Thu, 5 Nov 2020 19:59:45 -0800 (PST) Received: by mail-pf1-x443.google.com with SMTP id c20so93678pfr.8 for ; Thu, 05 Nov 2020 19:59:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=n6FGI3TOlVsKIxfi7+OHS1aAeIMzvqwcYjLn7l/BGo8=; b=rh+KRaOGkjRXyrooJRvk/PrZSNsQHQ3HXtWENHNZ9pzAu3ElONL/wl08idzyfgmvJp v370nGUJeITjsR+Ty0oQ/+gO9m6uRjI7I+qaOo/bDmZt62rNwDMl+qagtMMdV0kkKdoB ieqmZK9PigtltgLxBaCgpczPKMTbZ/oz/zeBPMEckxALkYUyuiZzrlBXlk/uSAlgv/zP NAm+iIP4uReEOJdLWsYJSBuVIq3/PSRz1enXKHEbXucjZjjfPjTbO/jPwREWGVv4G33s PIeN1oXvPo+9VLcL0WWp9XY4ZTicen9/Heb6PO3xMRJU4GQBTvUVCYsY1Jv2HOnu4uaB nHUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=n6FGI3TOlVsKIxfi7+OHS1aAeIMzvqwcYjLn7l/BGo8=; b=SEo2ZsGARPGY5BwDAkoU1mPniQIS6ly5lywAOxoUvLyKf4anTf7IEcQz8QFk8SDS3r XzY/4ddDoBkUeCcc2e6h7NQmlB41OMUq944HltV/Kbezkzt8zbIvJrAtjbUUVzi+C9xQ iFRzLCGTe7H0aTD6jDXRbYzn0qj4ZMLGxFUaRXEiyoF2cBXQuFbZsD6HWj2Fsjdc4OVg DbsV+Q4JNq4w1jXGW3k+R0caSZNYs3c6u19dr1J1qV8ovW6yeAcNdeW9AXPOsBiTJh1u MJU23AHD8v2CV9caVOgOnKmAispniGuggMC0N5XQF5j0kkj6CpsivVY051RvJewzFxsq tGOQ== X-Gm-Message-State: AOAM531345ABJ0zVO8vr27pCO9nX1HOYEINx/vn7dyxc9bRfFbz/ebcz XxyNhtsgOkLQUyHE607FTbHMmrA3eMQ= X-Google-Smtp-Source: ABdhPJxIVh79MYsgPbwgZWsMq1t5EpxH/FRrKrt7adMtuwdP9WBvQp5FDpljEinzWU6bc+RDmiFG6A== X-Received: by 2002:a63:fe0f:: with SMTP id p15mr35954pgh.343.1604635184607; Thu, 05 Nov 2020 19:59:44 -0800 (PST) Received: from harshads-520.kir.corp.google.com ([2620:15c:17:10:a6ae:11ff:fe11:86a2]) by smtp.googlemail.com with ESMTPSA id z13sm3869429pgc.44.2020.11.05.19.59.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2020 19:59:43 -0800 (PST) From: Harshad Shirwadkar To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Harshad Shirwadkar Subject: [PATCH v2 16/22] ext4: remove unnecessary fast commit calls from ext4_file_mmap Date: Thu, 5 Nov 2020 19:59:05 -0800 Message-Id: <20201106035911.1942128-17-harshadshirwadkar@gmail.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog In-Reply-To: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> References: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Remove unnecessary calls to ext4_fc_start_update() and ext4_fc_stop_update() from ext4_file_mmap(). Signed-off-by: Harshad Shirwadkar --- fs/ext4/file.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/fs/ext4/file.c b/fs/ext4/file.c index d85412d12e3a..80ad5ccc0288 100644 --- a/fs/ext4/file.c +++ b/fs/ext4/file.c @@ -761,7 +761,6 @@ static int ext4_file_mmap(struct file *file, struct vm_area_struct *vma) if (!daxdev_mapping_supported(vma, dax_dev)) return -EOPNOTSUPP; - ext4_fc_start_update(inode); file_accessed(file); if (IS_DAX(file_inode(file))) { vma->vm_ops = &ext4_dax_vm_ops; @@ -769,7 +768,6 @@ static int ext4_file_mmap(struct file *file, struct vm_area_struct *vma) } else { vma->vm_ops = &ext4_file_vm_ops; } - ext4_fc_stop_update(inode); return 0; } From patchwork Fri Nov 6 03:59:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: harshad shirwadkar X-Patchwork-Id: 1395468 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=qH/ukCIh; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CS68z58Bkz9sTK for ; Fri, 6 Nov 2020 14:59:47 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726140AbgKFD7r (ORCPT ); Thu, 5 Nov 2020 22:59:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58368 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725895AbgKFD7q (ORCPT ); Thu, 5 Nov 2020 22:59:46 -0500 Received: from mail-pg1-x544.google.com (mail-pg1-x544.google.com [IPv6:2607:f8b0:4864:20::544]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BC7B7C0613CF for ; Thu, 5 Nov 2020 19:59:46 -0800 (PST) Received: by mail-pg1-x544.google.com with SMTP id i7so2929442pgh.6 for ; Thu, 05 Nov 2020 19:59:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Jwe/Ku04AbDt7NSH+PYmo4h0fXGuv0hcn0VSTzaPsGs=; b=qH/ukCIhfdtwo2k8qQUq48Zwf6oXSBUB/3xd9pFF44k7+6ng7B69jKXpyKW/1ujwn/ qqg7dUaJtRMXagq6gNraxQpHcdIqAQkYpG0EzPec0S3JAeeoMiOsdQkxMx7hto6Kd+Rw AtlQpaks/cEyYYYsrIsUPD5LcUhVNKeeanXPwgbBpVLv+3teaVPT7qZpi5KgT/WkG8M0 VbF6I47PsjKkDiKNxJLewgZ7Pyb/bjKg6sANM2Hf7+g/FANhOq3fBAe0rufPezNQrUBU dxvSMFExU15PUc7gs2ZSMA2suspyvwpCh8t6HVRBstaiD3sZzXhBn4ZxeXBYMhxZSvwE g2jQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Jwe/Ku04AbDt7NSH+PYmo4h0fXGuv0hcn0VSTzaPsGs=; b=i/mNP9ukRdjOlf+LZ/H6ZBNQGyiQZQX7AouerqkA9+zeFP6nYtCFM85P3C7kk5A2JX ArJ6b4aQX08NZMvknmnP10l9cFWJVE0Z8mj6ld6gcgu3Pc8IarGmT1zRyaPPsuBuUtey WtYC+Iz/84kjcJBUse6psuF702PV2jknjMvsyuMVpoO8i4eVOCh/CU6iSpprvVEg7wf/ O7F9WiOLoGGCvZaVfTpkMYGb+x2NCIp12bZXiAS6yRg0/ffNtCYPzxrdqxQ47fofyCRQ m88cgL1KroBHVXGMUTTTg161ILK5ZOXOKb229tsaBOUM8ZGdItqSo840dZXr1u+UxOoQ a0lQ== X-Gm-Message-State: AOAM532BvS6XysMCzc6qib+zhn9aId62dq1zt4xV0goFyxryQDQNKiq6 u4tpm7cZACvtA3qaAzBv27OJB04WHSA= X-Google-Smtp-Source: ABdhPJzxzsovuG0MAwxken3uDX57VXxB8ovsGF23vrNXNndx3qDLQWJZ/sXH90x+7TkNfPDG6uqLAQ== X-Received: by 2002:a63:6645:: with SMTP id a66mr45021pgc.207.1604635185903; Thu, 05 Nov 2020 19:59:45 -0800 (PST) Received: from harshads-520.kir.corp.google.com ([2620:15c:17:10:a6ae:11ff:fe11:86a2]) by smtp.googlemail.com with ESMTPSA id z13sm3869429pgc.44.2020.11.05.19.59.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2020 19:59:44 -0800 (PST) From: Harshad Shirwadkar To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Harshad Shirwadkar , Andrea Righi , Jan Kara Subject: [PATCH v2 17/22] ext4: fix inode dirty check in case of fast commits Date: Thu, 5 Nov 2020 19:59:06 -0800 Message-Id: <20201106035911.1942128-18-harshadshirwadkar@gmail.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog In-Reply-To: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> References: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org In case of fast commits, determine if the inode is dirty by checking if the inode is on fast commit list. This also helps us get rid of ext4_inode_info.i_fc_committed_subtid field. Reported-by: Andrea Righi Tested-by: Andrea Righi Reviewed-by: Jan Kara Signed-off-by: Harshad Shirwadkar --- fs/ext4/ext4.h | 3 --- fs/ext4/fast_commit.c | 3 --- fs/ext4/inode.c | 3 +-- 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index 23f8edd4fb2a..e81104578015 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -1028,9 +1028,6 @@ struct ext4_inode_info { * protected by sbi->s_fc_lock. */ - /* Fast commit subtid when this inode was committed */ - unsigned int i_fc_committed_subtid; - /* Start of lblk range that needs to be committed in this fast commit */ ext4_lblk_t i_fc_lblk_start; diff --git a/fs/ext4/fast_commit.c b/fs/ext4/fast_commit.c index 05e6e76a7663..6b963e09af2c 100644 --- a/fs/ext4/fast_commit.c +++ b/fs/ext4/fast_commit.c @@ -152,7 +152,6 @@ void ext4_fc_init_inode(struct inode *inode) INIT_LIST_HEAD(&ei->i_fc_list); init_waitqueue_head(&ei->i_fc_wait); atomic_set(&ei->i_fc_updates, 0); - ei->i_fc_committed_subtid = 0; } /* This function must be called with sbi->s_fc_lock held. */ @@ -1037,8 +1036,6 @@ static int ext4_fc_perform_commit(journal_t *journal) if (ret) goto out; spin_lock(&sbi->s_fc_lock); - EXT4_I(inode)->i_fc_committed_subtid = - atomic_read(&sbi->s_fc_subtid); } spin_unlock(&sbi->s_fc_lock); diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 87120c4c44f3..000bf70e88ed 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -3312,8 +3312,7 @@ static bool ext4_inode_datasync_dirty(struct inode *inode) EXT4_I(inode)->i_datasync_tid)) return false; if (test_opt2(inode->i_sb, JOURNAL_FAST_COMMIT)) - return atomic_read(&EXT4_SB(inode->i_sb)->s_fc_subtid) < - EXT4_I(inode)->i_fc_committed_subtid; + return !list_empty(&EXT4_I(inode)->i_fc_list); return true; } From patchwork Fri Nov 6 03:59:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: harshad shirwadkar X-Patchwork-Id: 1395469 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=DyBx1VK8; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CS6910N3Fz9sTK for ; Fri, 6 Nov 2020 14:59:49 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726146AbgKFD7s (ORCPT ); Thu, 5 Nov 2020 22:59:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58376 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725895AbgKFD7s (ORCPT ); Thu, 5 Nov 2020 22:59:48 -0500 Received: from mail-pg1-x543.google.com (mail-pg1-x543.google.com [IPv6:2607:f8b0:4864:20::543]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 08E52C0613CF for ; Thu, 5 Nov 2020 19:59:48 -0800 (PST) Received: by mail-pg1-x543.google.com with SMTP id i26so2931685pgl.5 for ; Thu, 05 Nov 2020 19:59:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/+nEvLfDzPet76f15vlvCMrgMMebL2c9QMOO9knBIDQ=; b=DyBx1VK86bz2QaoOydT572XWXNA3mIeiVSyTvDmYibonWopFdJobd1pxMdk+hXDo4j y+NacwoDuqaSQ/7h6WlR4Sao+P2EO/dPABPGPLXlPkF79RrUWO3iKCQMv47TJFTuEiad s9xiBN0QE4pq55o5m5E73sQEtq4ASyTpNjEjhx7vbrtBN3c0tqwMTadRgzwkia5sCiWS qbBbLRVYRUKMQE7wA/QcnIQloLnpsjjpONH7yhT2hrs2rbJvwVvBNXDDLLbwfSV/PYdb c6T8SESJQ1qzvxtZqUP6vXKSd3dWQWAxLeZJLJcqcHDozAhy9sols5QBRVjoWzFOyYc1 4eVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/+nEvLfDzPet76f15vlvCMrgMMebL2c9QMOO9knBIDQ=; b=HlbDgNK1NfcRWPJk3bT12t1C7XNfwmq85gwhBAPKcDLYu8NGnknSNelVW3pkTIe4tQ Psx1XtTpJ0IB5HKYc9Y/zjtyFZNKlMjrDjHzxdDYjud52dF3GFnqIXbSAwnnFO/BkNHv +zRcSNMqaJVjhM6oAI9AIn2fzUE8W5FLY0QsTYQUe67q4VbNHIBNbBD7v5hDxjwrahHU Qta8KqRPdX0VgfA6dsIlPdN/HZNgJiQGkLtMuX6Y+OT93mulhwy70NXeQkodaq+k0WEw snUgJviYNzYmbR/d19af3mpzDg4U5fIbHqqwY4Mu9eiRq1edPaozoivrbDTphCTmVeJT CZGw== X-Gm-Message-State: AOAM532Rb4zlyJZK5I3Q3m9kj84hszDdjM80cYZrA6ZonZt72r5uyYdR nd8sGzjU++q7ff/u3iyvegi4pcwzf5E= X-Google-Smtp-Source: ABdhPJyeFWgS/qbLcd3V+FYh3gQZb8SraYCOWJHwMtU2rNm5alOgBCF+kpg75TMehf2vyoT6Wuj7IA== X-Received: by 2002:a17:90a:6288:: with SMTP id d8mr292125pjj.210.1604635187090; Thu, 05 Nov 2020 19:59:47 -0800 (PST) Received: from harshads-520.kir.corp.google.com ([2620:15c:17:10:a6ae:11ff:fe11:86a2]) by smtp.googlemail.com with ESMTPSA id z13sm3869429pgc.44.2020.11.05.19.59.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2020 19:59:46 -0800 (PST) From: Harshad Shirwadkar To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Harshad Shirwadkar , Jan Kara Subject: [PATCH v2 18/22] ext4: disable fast commit with data journalling Date: Thu, 5 Nov 2020 19:59:07 -0800 Message-Id: <20201106035911.1942128-19-harshadshirwadkar@gmail.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog In-Reply-To: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> References: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Fast commits don't work with data journalling. This patch disables the fast commit support when data journalling is turned on. Suggested-by: Jan Kara Signed-off-by: Harshad Shirwadkar Reviewed-by: Jan Kara --- fs/ext4/fast_commit.c | 7 +++++++ fs/ext4/fast_commit.h | 1 + fs/ext4/super.c | 3 ++- include/trace/events/ext4.h | 6 ++++-- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/fs/ext4/fast_commit.c b/fs/ext4/fast_commit.c index 6b963e09af2c..fb9b4e9d82b2 100644 --- a/fs/ext4/fast_commit.c +++ b/fs/ext4/fast_commit.c @@ -483,6 +483,12 @@ void ext4_fc_track_inode(handle_t *handle, struct inode *inode) if (S_ISDIR(inode->i_mode)) return; + if (ext4_should_journal_data(inode)) { + ext4_fc_mark_ineligible(inode->i_sb, + EXT4_FC_REASON_INODE_JOURNAL_DATA); + return; + } + ret = ext4_fc_track_template(handle, inode, __track_inode, NULL, 1); trace_ext4_fc_track_inode(inode, ret); } @@ -2102,6 +2108,7 @@ const char *fc_ineligible_reasons[] = { "Resize", "Dir renamed", "Falloc range op", + "Data journalling", "FC Commit Failed" }; diff --git a/fs/ext4/fast_commit.h b/fs/ext4/fast_commit.h index 1d96e0ac8138..3a6e5a1fa1b8 100644 --- a/fs/ext4/fast_commit.h +++ b/fs/ext4/fast_commit.h @@ -102,6 +102,7 @@ enum { EXT4_FC_REASON_RESIZE, EXT4_FC_REASON_RENAME_DIR, EXT4_FC_REASON_FALLOC_RANGE, + EXT4_FC_REASON_INODE_JOURNAL_DATA, EXT4_FC_COMMIT_FAILED, EXT4_FC_REASON_MAX }; diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 9d2fbeb0c9ea..5386736913d2 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -4340,9 +4340,10 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent) #endif if (test_opt(sb, DATA_FLAGS) == EXT4_MOUNT_JOURNAL_DATA) { - printk_once(KERN_WARNING "EXT4-fs: Warning: mounting with data=journal disables delayed allocation, dioread_nolock, and O_DIRECT support!\n"); + printk_once(KERN_WARNING "EXT4-fs: Warning: mounting with data=journal disables delayed allocation, dioread_nolock, O_DIRECT and fast_commit support!\n"); /* can't mount with both data=journal and dioread_nolock. */ clear_opt(sb, DIOREAD_NOLOCK); + clear_opt2(sb, JOURNAL_FAST_COMMIT); if (test_opt2(sb, EXPLICIT_DELALLOC)) { ext4_msg(sb, KERN_ERR, "can't mount with " "both data=journal and delalloc"); diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h index 0f899d3b09d3..70ae5497b73a 100644 --- a/include/trace/events/ext4.h +++ b/include/trace/events/ext4.h @@ -104,7 +104,8 @@ TRACE_DEFINE_ENUM(ES_REFERENCED_B); { EXT4_FC_REASON_SWAP_BOOT, "SWAP_BOOT"}, \ { EXT4_FC_REASON_RESIZE, "RESIZE"}, \ { EXT4_FC_REASON_RENAME_DIR, "RENAME_DIR"}, \ - { EXT4_FC_REASON_FALLOC_RANGE, "FALLOC_RANGE"}) + { EXT4_FC_REASON_FALLOC_RANGE, "FALLOC_RANGE"}, \ + { EXT4_FC_REASON_INODE_JOURNAL_DATA, "INODE_JOURNAL_DATA"}) TRACE_EVENT(ext4_other_inode_update_time, TP_PROTO(struct inode *inode, ino_t orig_ino), @@ -2917,7 +2918,7 @@ TRACE_EVENT(ext4_fc_stats, ), TP_printk("dev %d:%d fc ineligible reasons:\n" - "%s:%d, %s:%d, %s:%d, %s:%d, %s:%d, %s:%d, %s:%d, %s:%d; " + "%s:%d, %s:%d, %s:%d, %s:%d, %s:%d, %s:%d, %s:%d, %s:%d, %s:%d; " "num_commits:%ld, ineligible: %ld, numblks: %ld", MAJOR(__entry->dev), MINOR(__entry->dev), FC_REASON_NAME_STAT(EXT4_FC_REASON_XATTR), @@ -2928,6 +2929,7 @@ TRACE_EVENT(ext4_fc_stats, FC_REASON_NAME_STAT(EXT4_FC_REASON_RESIZE), FC_REASON_NAME_STAT(EXT4_FC_REASON_RENAME_DIR), FC_REASON_NAME_STAT(EXT4_FC_REASON_FALLOC_RANGE), + FC_REASON_NAME_STAT(EXT4_FC_REASON_INODE_JOURNAL_DATA), __entry->sbi->s_fc_stats.fc_num_commits, __entry->sbi->s_fc_stats.fc_ineligible_commits, __entry->sbi->s_fc_stats.fc_numblks) From patchwork Fri Nov 6 03:59:08 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: harshad shirwadkar X-Patchwork-Id: 1395470 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=ruZQNp9v; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CS6921pv5z9sTK for ; Fri, 6 Nov 2020 14:59:50 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726149AbgKFD7t (ORCPT ); Thu, 5 Nov 2020 22:59:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58380 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725895AbgKFD7t (ORCPT ); Thu, 5 Nov 2020 22:59:49 -0500 Received: from mail-pf1-x441.google.com (mail-pf1-x441.google.com [IPv6:2607:f8b0:4864:20::441]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 86DCEC0613CF for ; Thu, 5 Nov 2020 19:59:49 -0800 (PST) Received: by mail-pf1-x441.google.com with SMTP id 13so106737pfy.4 for ; Thu, 05 Nov 2020 19:59:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QSwbKKvh8Hp0Fdw46Qy4abtOB/tlJi/kJqfeA/AIQ7Y=; b=ruZQNp9vOf1SB/g02NNp/1solBr9/kIulEOZe6aX9rmAupZhFrccRm6VdAbRdNEnaX JBfDl2E2fzO87Y7gHP5WtxbxL+bxXqJBKykP59GcntnIaXyUCMchEZKft67zkKOqPxk4 +WidVyFUz+HVzoh90iEpSVVek3edV/O5ETQyiMPD6Ho6CUSShsoaRavb+kRxr7DSZ1tF EQz4sgWZY1hwi+h0AREW06kbrwiKWJViqyBZyrGPb2NgVabR3ozAzQf5iCCAMVNenor9 FM9EHgEiIfsX29XDotQ5Ec+eMSvljLRG7rwBTrp3E57OZ0teYG4BBbcD5iL4GTu2aXKX P2zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=QSwbKKvh8Hp0Fdw46Qy4abtOB/tlJi/kJqfeA/AIQ7Y=; b=WlQchZOm94dK33caen0Wp6MOBYa6Q6vLMtqTBJ6ruyYPOqywZQkFj+f8fh0XFkZJ11 WNDoPeu3Q0e0sw4vlqF+atUx3PRA+iGO05yYB6v4bxdCXYf3rlOPq6AXVJBAMu9hujtf 3c8cQEjUvefCTd4d66nCD12qMWEhTb7XzFBxlrfWoJ4nG1U+fcXYwc7aRbgtell0s2R1 jMN6lxWq8OG0dpTMIDeiMAOr5g8cpp0lFPC5wkZOEseWHOdxA3TlvIST8Y2dSG3vNXf/ syGutPO/wHzrSMK0Khy+Ana74oXx5EXl7JbyBV6B3kRNtH5AkWEmufFF2te72exgR8KU O3Hg== X-Gm-Message-State: AOAM531arXbD8rjwf7BcyZbtHzQgiYFLgWbpwkqISm7q0Dlqlq2m9UW8 AyID0v4VZGb+3fZFpvYUxv6DQ1ITVew= X-Google-Smtp-Source: ABdhPJzqI6j0BtwgZ265zJkyjBaR5+yCvUgVC6ona6mbielHQ4QrDBM9eHElLxleaQ7KlHT2Hzdglw== X-Received: by 2002:a17:90a:5d17:: with SMTP id s23mr260151pji.103.1604635188714; Thu, 05 Nov 2020 19:59:48 -0800 (PST) Received: from harshads-520.kir.corp.google.com ([2620:15c:17:10:a6ae:11ff:fe11:86a2]) by smtp.googlemail.com with ESMTPSA id z13sm3869429pgc.44.2020.11.05.19.59.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2020 19:59:47 -0800 (PST) From: Harshad Shirwadkar To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Harshad Shirwadkar , Jan Kara Subject: [PATCH v2 19/22] ext4: issue fsdev cache flush before starting fast commit Date: Thu, 5 Nov 2020 19:59:08 -0800 Message-Id: <20201106035911.1942128-20-harshadshirwadkar@gmail.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog In-Reply-To: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> References: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org If the journal dev is different from fsdev, issue a cache flush before committing fast commit blocks to disk. Suggested-by: Jan Kara Signed-off-by: Harshad Shirwadkar Reviewed-by: Jan Kara --- fs/ext4/fast_commit.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/fs/ext4/fast_commit.c b/fs/ext4/fast_commit.c index fb9b4e9d82b2..ebe5f423f8f2 100644 --- a/fs/ext4/fast_commit.c +++ b/fs/ext4/fast_commit.c @@ -1007,6 +1007,13 @@ static int ext4_fc_perform_commit(journal_t *journal) if (ret) return ret; + /* + * If file system device is different from journal device, issue a cache + * flush before we start writing fast commit blocks. + */ + if (journal->j_fs_dev != journal->j_dev) + blkdev_issue_flush(journal->j_fs_dev, GFP_NOFS); + blk_start_plug(&plug); if (sbi->s_fc_bytes == 0) { /* From patchwork Fri Nov 6 03:59:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: harshad shirwadkar X-Patchwork-Id: 1395471 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=ufpIkbB0; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CS69361dmz9sTK for ; Fri, 6 Nov 2020 14:59:51 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726156AbgKFD7v (ORCPT ); Thu, 5 Nov 2020 22:59:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58388 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725895AbgKFD7v (ORCPT ); Thu, 5 Nov 2020 22:59:51 -0500 Received: from mail-pf1-x443.google.com (mail-pf1-x443.google.com [IPv6:2607:f8b0:4864:20::443]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 108FCC0613CF for ; Thu, 5 Nov 2020 19:59:51 -0800 (PST) Received: by mail-pf1-x443.google.com with SMTP id 13so106782pfy.4 for ; Thu, 05 Nov 2020 19:59:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=fEUHniCwb/xx1lKRcADI2741njgdkHiQLjWiWM/5o9Y=; b=ufpIkbB0LsFk2O1mWMaCF2okbMV9rZxuWOLXgMaME26xPYwphWgPZ+i2w8OjpVBOx4 kXHFFRFUVLlNyx6sGeMEyeJcdjbXj6A+/MvIfANw+8SyHL6x73aEJBbmxRpgNOrnW1/5 qoA2jYCCIVHGkmlP1che4EsSgk9APNdZAT7vEwhXboBP5sTNFMgfYnfUniDVMNEk6GiP HI70x7Ehdv+fSiueWY388FlJWAdDGfzh3+9kPZxACmKKzwn5Jl0rmakMm4yLtcb8i7KZ mmtaba3ZenwAAZOLt7yaiDwUlHh59bmRj9FxYZaxGpYasi2eMW51YnCEfiEGVTniPfDl TlwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=fEUHniCwb/xx1lKRcADI2741njgdkHiQLjWiWM/5o9Y=; b=P34+2KktyNosOpbMuwlvhBUo4My612vySLakgJh+Y05fsNhztG3EL03YXhLhyuvzGx 9TfQ0i7Yak+F8hTdG3XwYido8ghUn4Jv31OiiXSWENFCsrB98LphMSN07Gakt7xtAFGC URUaHWlXZLPxmoLpFmhYcsLSqvg3HK/uFZQEUE4mAl3IEK26PHGUOqcxoiEXOBIa1ZmL nCngU1pyfmO1JRCu2W6SjyVRLhfGY8X+8XKw1Umhu6oalWD6G6OuvQ+mXU4BN3o8AkNJ YMIoUtTGM8omsW1h7yLTr8O4S7zKP9/mkPNa+tTl1NCVfmPFZygxG92qHgzdvxVmJ7Cu Yy4Q== X-Gm-Message-State: AOAM533YVxhliyCb4xv2wSc2P5r/G6yzp/oLYAMumnCpJ6493bYh8UxT ns7YlwDN/F+rGQfeLqUc+yFEzpYrsjs= X-Google-Smtp-Source: ABdhPJwdsJboOFVrJLGpya/W6pjB+1SKo1XNkc1K3ysj0pnQkXGYtapxojeWauWqJ8/F+JH7aMgSrA== X-Received: by 2002:a17:90a:ef8b:: with SMTP id m11mr242632pjy.161.1604635190118; Thu, 05 Nov 2020 19:59:50 -0800 (PST) Received: from harshads-520.kir.corp.google.com ([2620:15c:17:10:a6ae:11ff:fe11:86a2]) by smtp.googlemail.com with ESMTPSA id z13sm3869429pgc.44.2020.11.05.19.59.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2020 19:59:49 -0800 (PST) From: Harshad Shirwadkar To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Harshad Shirwadkar , Jan Kara Subject: [PATCH v2 20/22] ext4: make s_mount_flags modifications atomic Date: Thu, 5 Nov 2020 19:59:09 -0800 Message-Id: <20201106035911.1942128-21-harshadshirwadkar@gmail.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog In-Reply-To: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> References: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Fast commit file system states are recorded in sbi->s_mount_flags. Fast commit expects these bit manipulations to be atomic. This patch adds helpers to make those modifications atomic. Suggested-by: Jan Kara Signed-off-by: Harshad Shirwadkar --- fs/ext4/ext4.h | 40 +++++++++++++++++++++++++++++----------- fs/ext4/fast_commit.c | 18 +++++++++--------- fs/ext4/file.c | 4 ++-- fs/ext4/fsync.c | 2 +- fs/ext4/inode.c | 4 ++-- fs/ext4/mballoc.c | 4 ++-- fs/ext4/super.c | 14 +++++++------- 7 files changed, 52 insertions(+), 34 deletions(-) diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index e81104578015..16de3d62ce2b 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -1419,16 +1419,6 @@ struct ext4_super_block { #ifdef __KERNEL__ -/* - * run-time mount flags - */ -#define EXT4_MF_MNTDIR_SAMPLED 0x0001 -#define EXT4_MF_FS_ABORTED 0x0002 /* Fatal error detected */ -#define EXT4_MF_FC_INELIGIBLE 0x0004 /* Fast commit ineligible */ -#define EXT4_MF_FC_COMMITTING 0x0008 /* File system underoing a fast - * commit. - */ - #ifdef CONFIG_FS_ENCRYPTION #define DUMMY_ENCRYPTION_ENABLED(sbi) ((sbi)->s_dummy_enc_policy.policy != NULL) #else @@ -1471,7 +1461,7 @@ struct ext4_sb_info { struct buffer_head * __rcu *s_group_desc; unsigned int s_mount_opt; unsigned int s_mount_opt2; - unsigned int s_mount_flags; + unsigned long s_mount_flags; unsigned int s_def_mount_opt; ext4_fsblk_t s_sb_block; atomic64_t s_resv_clusters; @@ -1703,6 +1693,34 @@ static inline int ext4_valid_inum(struct super_block *sb, unsigned long ino) _v; \ }) +/* + * run-time mount flags + */ +enum { + EXT4_MF_MNTDIR_SAMPLED, + EXT4_MF_FS_ABORTED, /* Fatal error detected */ + EXT4_MF_FC_INELIGIBLE, /* Fast commit ineligible */ + EXT4_MF_FC_COMMITTING /* File system underoing a fast + * commit. + */ +}; + +static inline void ext4_set_mount_flag(struct super_block *sb, int bit) +{ + set_bit(bit, &EXT4_SB(sb)->s_mount_flags); +} + +static inline void ext4_clear_mount_flag(struct super_block *sb, int bit) +{ + clear_bit(bit, &EXT4_SB(sb)->s_mount_flags); +} + +static inline int ext4_test_mount_flag(struct super_block *sb, int bit) +{ + return test_bit(bit, &EXT4_SB(sb)->s_mount_flags); +} + + /* * Simulate_fail codes */ diff --git a/fs/ext4/fast_commit.c b/fs/ext4/fast_commit.c index ebe5f423f8f2..5cd6630ab1b9 100644 --- a/fs/ext4/fast_commit.c +++ b/fs/ext4/fast_commit.c @@ -261,7 +261,7 @@ void ext4_fc_mark_ineligible(struct super_block *sb, int reason) (EXT4_SB(sb)->s_mount_state & EXT4_FC_REPLAY)) return; - sbi->s_mount_flags |= EXT4_MF_FC_INELIGIBLE; + ext4_set_mount_flag(sb, EXT4_MF_FC_INELIGIBLE); WARN_ON(reason >= EXT4_FC_REASON_MAX); sbi->s_fc_stats.fc_ineligible_reason_count[reason]++; } @@ -294,14 +294,14 @@ void ext4_fc_stop_ineligible(struct super_block *sb) (EXT4_SB(sb)->s_mount_state & EXT4_FC_REPLAY)) return; - EXT4_SB(sb)->s_mount_flags |= EXT4_MF_FC_INELIGIBLE; + ext4_set_mount_flag(sb, EXT4_MF_FC_INELIGIBLE); atomic_dec(&EXT4_SB(sb)->s_fc_ineligible_updates); } static inline int ext4_fc_is_ineligible(struct super_block *sb) { - return (EXT4_SB(sb)->s_mount_flags & EXT4_MF_FC_INELIGIBLE) || - atomic_read(&EXT4_SB(sb)->s_fc_ineligible_updates); + return (ext4_test_mount_flag(sb, EXT4_MF_FC_INELIGIBLE) || + atomic_read(&EXT4_SB(sb)->s_fc_ineligible_updates)); } /* @@ -349,7 +349,7 @@ static int ext4_fc_track_template( spin_lock(&sbi->s_fc_lock); if (list_empty(&EXT4_I(inode)->i_fc_list)) list_add_tail(&EXT4_I(inode)->i_fc_list, - (sbi->s_mount_flags & EXT4_MF_FC_COMMITTING) ? + (ext4_test_mount_flag(inode->i_sb, EXT4_MF_FC_COMMITTING)) ? &sbi->s_fc_q[FC_Q_STAGING] : &sbi->s_fc_q[FC_Q_MAIN]); spin_unlock(&sbi->s_fc_lock); @@ -402,7 +402,7 @@ static int __track_dentry_update(struct inode *inode, void *arg, bool update) node->fcd_name.len = dentry->d_name.len; spin_lock(&sbi->s_fc_lock); - if (sbi->s_mount_flags & EXT4_MF_FC_COMMITTING) + if (ext4_test_mount_flag(inode->i_sb, EXT4_MF_FC_COMMITTING)) list_add_tail(&node->fcd_list, &sbi->s_fc_dentry_q[FC_Q_STAGING]); else @@ -857,7 +857,7 @@ static int ext4_fc_submit_inode_data_all(journal_t *journal) int ret = 0; spin_lock(&sbi->s_fc_lock); - sbi->s_mount_flags |= EXT4_MF_FC_COMMITTING; + ext4_set_mount_flag(sb, EXT4_MF_FC_COMMITTING); list_for_each(pos, &sbi->s_fc_q[FC_Q_MAIN]) { ei = list_entry(pos, struct ext4_inode_info, i_fc_list); ext4_set_inode_state(&ei->vfs_inode, EXT4_STATE_FC_COMMITTING); @@ -1206,8 +1206,8 @@ static void ext4_fc_cleanup(journal_t *journal, int full) list_splice_init(&sbi->s_fc_q[FC_Q_STAGING], &sbi->s_fc_q[FC_Q_STAGING]); - sbi->s_mount_flags &= ~EXT4_MF_FC_COMMITTING; - sbi->s_mount_flags &= ~EXT4_MF_FC_INELIGIBLE; + ext4_clear_mount_flag(sb, EXT4_MF_FC_COMMITTING); + ext4_clear_mount_flag(sb, EXT4_MF_FC_INELIGIBLE); if (full) sbi->s_fc_bytes = 0; diff --git a/fs/ext4/file.c b/fs/ext4/file.c index 80ad5ccc0288..3ed8c048fb12 100644 --- a/fs/ext4/file.c +++ b/fs/ext4/file.c @@ -780,13 +780,13 @@ static int ext4_sample_last_mounted(struct super_block *sb, handle_t *handle; int err; - if (likely(sbi->s_mount_flags & EXT4_MF_MNTDIR_SAMPLED)) + if (likely(ext4_test_mount_flag(sb, EXT4_MF_MNTDIR_SAMPLED))) return 0; if (sb_rdonly(sb) || !sb_start_intwrite_trylock(sb)) return 0; - sbi->s_mount_flags |= EXT4_MF_MNTDIR_SAMPLED; + ext4_set_mount_flag(sb, EXT4_MF_MNTDIR_SAMPLED); /* * Sample where the filesystem has been mounted and * store it in the superblock for sysadmin convenience diff --git a/fs/ext4/fsync.c b/fs/ext4/fsync.c index 81a545fd14a3..a42ca95840f2 100644 --- a/fs/ext4/fsync.c +++ b/fs/ext4/fsync.c @@ -143,7 +143,7 @@ int ext4_sync_file(struct file *file, loff_t start, loff_t end, int datasync) if (sb_rdonly(inode->i_sb)) { /* Make sure that we read updated s_mount_flags value */ smp_rmb(); - if (sbi->s_mount_flags & EXT4_MF_FS_ABORTED) + if (ext4_test_mount_flag(inode->i_sb, EXT4_MF_FS_ABORTED)) ret = -EROFS; goto out; } diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 000bf70e88ed..0d8385aea898 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -2442,7 +2442,7 @@ static int mpage_map_and_submit_extent(handle_t *handle, struct super_block *sb = inode->i_sb; if (ext4_forced_shutdown(EXT4_SB(sb)) || - EXT4_SB(sb)->s_mount_flags & EXT4_MF_FS_ABORTED) + ext4_test_mount_flag(sb, EXT4_MF_FS_ABORTED)) goto invalidate_dirty_pages; /* * Let the uper layers retry transient errors. @@ -2676,7 +2676,7 @@ static int ext4_writepages(struct address_space *mapping, * the stack trace. */ if (unlikely(ext4_forced_shutdown(EXT4_SB(mapping->host->i_sb)) || - sbi->s_mount_flags & EXT4_MF_FS_ABORTED)) { + ext4_test_mount_flag(inode->i_sb, EXT4_MF_FS_ABORTED))) { ret = -EROFS; goto out_writepages; } diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index 85abbfb98cbe..f482a17ae764 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c @@ -4477,7 +4477,7 @@ static inline void ext4_mb_show_pa(struct super_block *sb) { ext4_group_t i, ngroups; - if (EXT4_SB(sb)->s_mount_flags & EXT4_MF_FS_ABORTED) + if (ext4_test_mount_flag(sb, EXT4_MF_FS_ABORTED)) return; ngroups = ext4_get_groups_count(sb); @@ -4508,7 +4508,7 @@ static void ext4_mb_show_ac(struct ext4_allocation_context *ac) { struct super_block *sb = ac->ac_sb; - if (EXT4_SB(sb)->s_mount_flags & EXT4_MF_FS_ABORTED) + if (ext4_test_mount_flag(sb, EXT4_MF_FS_ABORTED)) return; mb_debug(sb, "Can't allocate:" diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 5386736913d2..edb36581f6cc 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -686,7 +686,7 @@ static void ext4_handle_error(struct super_block *sb) if (!test_opt(sb, ERRORS_CONT)) { journal_t *journal = EXT4_SB(sb)->s_journal; - EXT4_SB(sb)->s_mount_flags |= EXT4_MF_FS_ABORTED; + ext4_set_mount_flag(sb, EXT4_MF_FS_ABORTED); if (journal) jbd2_journal_abort(journal, -EIO); } @@ -904,7 +904,7 @@ void __ext4_abort(struct super_block *sb, const char *function, va_end(args); if (sb_rdonly(sb) == 0) { - EXT4_SB(sb)->s_mount_flags |= EXT4_MF_FS_ABORTED; + ext4_set_mount_flag(sb, EXT4_MF_FS_ABORTED); if (EXT4_SB(sb)->s_journal) jbd2_journal_abort(EXT4_SB(sb)->s_journal, -EIO); @@ -2153,7 +2153,7 @@ static int handle_mount_opt(struct super_block *sb, char *opt, int token, ext4_msg(sb, KERN_WARNING, "Ignoring removed %s option", opt); return 1; case Opt_abort: - sbi->s_mount_flags |= EXT4_MF_FS_ABORTED; + ext4_set_mount_flag(sb, EXT4_MF_FS_ABORTED); return 1; case Opt_i_version: sb->s_flags |= SB_I_VERSION; @@ -4778,8 +4778,8 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent) INIT_LIST_HEAD(&sbi->s_fc_dentry_q[FC_Q_MAIN]); INIT_LIST_HEAD(&sbi->s_fc_dentry_q[FC_Q_STAGING]); sbi->s_fc_bytes = 0; - sbi->s_mount_flags &= ~EXT4_MF_FC_INELIGIBLE; - sbi->s_mount_flags &= ~EXT4_MF_FC_COMMITTING; + ext4_clear_mount_flag(sb, EXT4_MF_FC_INELIGIBLE); + ext4_clear_mount_flag(sb, EXT4_MF_FC_COMMITTING); spin_lock_init(&sbi->s_fc_lock); memset(&sbi->s_fc_stats, 0, sizeof(sbi->s_fc_stats)); sbi->s_fc_replay_state.fc_regions = NULL; @@ -5881,7 +5881,7 @@ static int ext4_remount(struct super_block *sb, int *flags, char *data) goto restore_opts; } - if (sbi->s_mount_flags & EXT4_MF_FS_ABORTED) + if (ext4_test_mount_flag(sb, EXT4_MF_FS_ABORTED)) ext4_abort(sb, EXT4_ERR_ESHUTDOWN, "Abort forced by user"); sb->s_flags = (sb->s_flags & ~SB_POSIXACL) | @@ -5895,7 +5895,7 @@ static int ext4_remount(struct super_block *sb, int *flags, char *data) } if ((bool)(*flags & SB_RDONLY) != sb_rdonly(sb)) { - if (sbi->s_mount_flags & EXT4_MF_FS_ABORTED) { + if (ext4_test_mount_flag(sb, EXT4_MF_FS_ABORTED)) { err = -EROFS; goto restore_opts; } From patchwork Fri Nov 6 03:59:10 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: harshad shirwadkar X-Patchwork-Id: 1395472 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=UYkafArS; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CS6950bN7z9sTK for ; Fri, 6 Nov 2020 14:59:53 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726158AbgKFD7w (ORCPT ); Thu, 5 Nov 2020 22:59:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58392 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725830AbgKFD7w (ORCPT ); Thu, 5 Nov 2020 22:59:52 -0500 Received: from mail-pf1-x443.google.com (mail-pf1-x443.google.com [IPv6:2607:f8b0:4864:20::443]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 58899C0613CF for ; Thu, 5 Nov 2020 19:59:52 -0800 (PST) Received: by mail-pf1-x443.google.com with SMTP id w65so111693pfd.3 for ; Thu, 05 Nov 2020 19:59:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=eGqyJKoHPFZ6D8548z0Pj4rGvVI+QhKznUCucjBN+T0=; b=UYkafArSFUZgGRzAYfUq3/tDCHG35YRiOUHWooks0iRWMpa/lrFbQfmh68R9Fc7AC9 V0hx6YcV2nOBKzY/OyXYZ43IUpKo2F5aKYA3axjafR7TSkc/hi8sb7aiYoTPcXNqOB7R HljnqBpNToA/woyBE8C1D1SexoHeLKlxP8TFP2yPVsnZN+TTvfflkCHOxt29Aj+jl5cl rfWs/EnySzSN7wTHzl/e8duw6tvlJYKIgmBDWkAl/S7VAFL3CEbwDQuNr4PEKztXrNon qrlLjjKQvqYWG8OhaAEYqUOgzBlmxeBGqiQ/3B98TKQ/ibFE1/df7M5Qi2063P+ULcKl tJUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=eGqyJKoHPFZ6D8548z0Pj4rGvVI+QhKznUCucjBN+T0=; b=JiKJ6iFWrrA1l0wuiQU9se8EeKExEvcAUUG7I0HPohyIYaQnUXGx/0BT4vTndsbxV2 NJOdChzCZHQj8d0ET0W6AhZ+Jpx9bb8JYAALBsD4xNV/7IPBKgudFNNfBhYPUeKt6D3+ IWwRj+s/CoOgjRpJ/qHzawObhWXJeNcDsPLTgR0HFbxy6LSW+eb0i+9uXo4sGI7pZ8+q aXyx0kYf0Ehd6KjmqV0HW8LisWD73zdNK9hKdGDmiJIb/85vU4/njdjW8LhfXYcOZXZD mryjkkWFRnquOt4jQtX8FJDErSjL4niLHDJdiA/90nQBqxoABTztGZg+4Qrvm/d/YPj/ iruw== X-Gm-Message-State: AOAM531sVklcnHaB6xwmhq2GHKOXt9cTKaKMpbThyFq4f9hLLDuhHyHL MTjsXnsc/PVpN2XmcuBOmhGwhIy3l38= X-Google-Smtp-Source: ABdhPJyuZLGaTPV7xcfTp8mOd1SHHXXhxd/9lqeVoE/5wjPIxZruGxms8YmcSuVz/+mEohbGkB98mw== X-Received: by 2002:a17:90a:160f:: with SMTP id n15mr259227pja.75.1604635191414; Thu, 05 Nov 2020 19:59:51 -0800 (PST) Received: from harshads-520.kir.corp.google.com ([2620:15c:17:10:a6ae:11ff:fe11:86a2]) by smtp.googlemail.com with ESMTPSA id z13sm3869429pgc.44.2020.11.05.19.59.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2020 19:59:50 -0800 (PST) From: Harshad Shirwadkar To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Harshad Shirwadkar Subject: [PATCH v2 21/22] jbd2: don't start fast commit on aborted journal Date: Thu, 5 Nov 2020 19:59:10 -0800 Message-Id: <20201106035911.1942128-22-harshadshirwadkar@gmail.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog In-Reply-To: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> References: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Fast commit should not be started if the journal is aborted. Signed-off-by: Harshad Shirwadkar --- fs/jbd2/journal.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c index f7ebf6ef69af..0c3d5e3b24b2 100644 --- a/fs/jbd2/journal.c +++ b/fs/jbd2/journal.c @@ -727,6 +727,8 @@ int jbd2_log_wait_commit(journal_t *journal, tid_t tid) */ int jbd2_fc_begin_commit(journal_t *journal, tid_t tid) { + if (unlikely(is_journal_aborted(journal))) + return -EIO; /* * Fast commits only allowed if at least one full commit has * been processed. From patchwork Fri Nov 6 03:59:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: harshad shirwadkar X-Patchwork-Id: 1395473 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=EUMPvFWF; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CS6973Glkz9sVM for ; Fri, 6 Nov 2020 14:59:55 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725895AbgKFD7y (ORCPT ); Thu, 5 Nov 2020 22:59:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58396 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726181AbgKFD7x (ORCPT ); Thu, 5 Nov 2020 22:59:53 -0500 Received: from mail-pf1-x442.google.com (mail-pf1-x442.google.com [IPv6:2607:f8b0:4864:20::442]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CF4DCC0613CF for ; Thu, 5 Nov 2020 19:59:53 -0800 (PST) Received: by mail-pf1-x442.google.com with SMTP id q10so121434pfn.0 for ; Thu, 05 Nov 2020 19:59:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=d5H2NqAW25lXN2uLV8kMXgbJdyDSpRD8qIvszub5uYU=; b=EUMPvFWF9ZfON4HDn+g6LT0Pcc/d+dCnBRETQ+wmV344EdYPNccV9XpkzhWvlpdTVD iB5zFK0OmVBCC0nmLSdKK/L3bsSaO0jHTNvW74jp4AGxvRd3SZYdCcHLjZpyuAjgx7ZC oq1gcfOEhj3ZyLKj8b8s7SDse+MufZ2vrnEMjxkY0jhRbmaadhYDeF+uSvv63R7JJJ0U CGM9wMEo1SEaxPAX/QRgZOaudqukBviPiT5wMuSKHoOe6zQmRomnrjVqigX7pHUUjc2X +N4SZcETKalQV9WSgFJ3IHobmAubPYRnHeSwszsMZ1Mr4BTfZa5G9NYqWjJJbv2Xx+N3 a6dQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=d5H2NqAW25lXN2uLV8kMXgbJdyDSpRD8qIvszub5uYU=; b=EGuT1SRkcNmMs3c+XUlZDi3aqS8U5nDUINC7mDPnPWz/7oG1upksnSBg7dwCB/QN96 +CPS/tVO9AVYK8vIej/Yn4vC06P6craG3BQ6pSN8xzOx0JDaIth1qgKu6EXZuEzgGn8N PWTLeVxmYdn6XWfY6LPnCcUNj8UvXW4XZ9Ee42mc+l7TmIyTn6PMd3BtomcJtXhehiIT UebdoueYOAtrIhtQj2g1ipgryWLupvFK+gQOyIZzhl2lGgO/RiSyh8MHZCUSyN8M0YkJ rZaUdvozcrNk4xu49RGiDiWfkVEYEoK/2YWnGplt/O6Zf6BibxiDGxC7MPHo46/kZtZH lnSg== X-Gm-Message-State: AOAM531CuY06kpV9kiWexi1dJEYPyys6NTej8Yub4NIGFV41UpMilx4g /bZgVeSidwppB05UTjkixqpEvsIElqk= X-Google-Smtp-Source: ABdhPJxa8bUsp+xQ0lTeORCRHHVG069jt0M9HOkZp9kkgvw8EQd8PKhb1rLUjIDSwS3uObxh8fMoKw== X-Received: by 2002:a63:e241:: with SMTP id y1mr70029pgj.264.1604635192916; Thu, 05 Nov 2020 19:59:52 -0800 (PST) Received: from harshads-520.kir.corp.google.com ([2620:15c:17:10:a6ae:11ff:fe11:86a2]) by smtp.googlemail.com with ESMTPSA id z13sm3869429pgc.44.2020.11.05.19.59.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2020 19:59:51 -0800 (PST) From: Harshad Shirwadkar To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Harshad Shirwadkar Subject: [PATCH v2 22/22] ext4: cleanup fast commit mount options Date: Thu, 5 Nov 2020 19:59:11 -0800 Message-Id: <20201106035911.1942128-23-harshadshirwadkar@gmail.com> X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog In-Reply-To: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> References: <20201106035911.1942128-1-harshadshirwadkar@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Drop no_fc mount option that disable fast commit even if it was enabled at mkfs time. Move fc_debug_force mount option under ifdef EXT4_DEBUG to annotate that this is strictly for debugging and testing purposes and should not be used in production. Signed-off-by: Harshad Shirwadkar --- fs/ext4/super.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/fs/ext4/super.c b/fs/ext4/super.c index edb36581f6cc..4679dbf14555 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -1716,11 +1716,10 @@ enum { Opt_dioread_nolock, Opt_dioread_lock, Opt_discard, Opt_nodiscard, Opt_init_itable, Opt_noinit_itable, Opt_max_dir_size_kb, Opt_nojournal_checksum, Opt_nombcache, - Opt_prefetch_block_bitmaps, Opt_no_fc, + Opt_prefetch_block_bitmaps, #ifdef CONFIG_EXT4_DEBUG - Opt_fc_debug_max_replay, + Opt_fc_debug_max_replay, Opt_fc_debug_force #endif - Opt_fc_debug_force }; static const match_table_t tokens = { @@ -1807,9 +1806,8 @@ static const match_table_t tokens = { {Opt_init_itable, "init_itable=%u"}, {Opt_init_itable, "init_itable"}, {Opt_noinit_itable, "noinit_itable"}, - {Opt_no_fc, "no_fc"}, - {Opt_fc_debug_force, "fc_debug_force"}, #ifdef CONFIG_EXT4_DEBUG + {Opt_fc_debug_force, "fc_debug_force"}, {Opt_fc_debug_max_replay, "fc_debug_max_replay=%u"}, #endif {Opt_max_dir_size_kb, "max_dir_size_kb=%u"}, @@ -2039,11 +2037,9 @@ static const struct mount_opts { {Opt_nombcache, EXT4_MOUNT_NO_MBCACHE, MOPT_SET}, {Opt_prefetch_block_bitmaps, EXT4_MOUNT_PREFETCH_BLOCK_BITMAPS, MOPT_SET}, - {Opt_no_fc, EXT4_MOUNT2_JOURNAL_FAST_COMMIT, - MOPT_CLEAR | MOPT_2 | MOPT_EXT4_ONLY}, +#ifdef CONFIG_EXT4_DEBUG {Opt_fc_debug_force, EXT4_MOUNT2_JOURNAL_FAST_COMMIT, MOPT_SET | MOPT_2 | MOPT_EXT4_ONLY}, -#ifdef CONFIG_EXT4_DEBUG {Opt_fc_debug_max_replay, 0, MOPT_GTE0}, #endif {Opt_err, 0, 0}