Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp1261782pxu; Fri, 27 Nov 2020 03:37:52 -0800 (PST) X-Google-Smtp-Source: ABdhPJwwYaxsFLj15qpgGVilBv3iGFtzVYeIbgHs+S8YQzIyQAZlhfqnrOTuSPXJg0+KESERDd5y X-Received: by 2002:a17:906:eb49:: with SMTP id mc9mr6941001ejb.487.1606477072433; Fri, 27 Nov 2020 03:37:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1606477072; cv=none; d=google.com; s=arc-20160816; b=p+n5ZSwSDheJe1e5rZ6Vfjq3W8+yu30Z7gUWoLAfaETcFdW4CJo66ZWE+inH68YAzT nVvoLYjRPTWQZTCJxfMWpBdnn0PbC/37xCNkG8bEbgI1Qhf/lDHG+1UYCVRTzD8mhGpE oO/+9tHbQV8biOM3UmWWqJ8v1W4LtxF6X8cPjF/dw8yGG9bqB+RPwViLPXsmz/UVN5gE 5xqlx1+TUQHcfGO8vbZZTz8FO0gTj6nU5SU9v2wVe4KSXVqZzIwxRYKcL4keB9gNQErw BEGSwyf+N+iGVtcDLyIvxG/Nk85dadVE285fDykMVXH2Ui6lIJc653qiVi04u53ntmsM FhLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from; bh=yLU8AV3sJKJWO4NO2B+4v4wTtdSYIQ58LxCuUxq33v0=; b=n956fEJyCzDowJ4rrq1LAjc5W9oDxbC3XuQ2bTAFnKpk0eK5YYDhdFtGute7APwn/D Ozq3kwSa9e8CV5p4zftZKchkeNOv1sYdxLrFhB8PfsMU2PTjjDtlfcpqJ61a9fcrIbki UDA7kP+GcHkUPcbw3aJM4R/cE4K9VHEt7sAhT7hbkLJDeEhPT5axB3Qwe9MPCUCrJVTg VyOmT9dVGJFoyPS2g/xqmVWBMBRVbOTzgUhM/6NP6sGdeMzuNEIRdz5VEanzmD9R1xcB V7dJS51ZXpg/NxOeQlzWalvrYP+x/af2fWG9pjPzr6j6HhnUGUkLUD3DyivWcNu3QdF9 TBIg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c26si4448652edv.182.2020.11.27.03.37.29; Fri, 27 Nov 2020 03:37:52 -0800 (PST) Received-SPF: pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729051AbgK0LeN (ORCPT + 99 others); Fri, 27 Nov 2020 06:34:13 -0500 Received: from mx2.suse.de ([195.135.220.15]:51638 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729352AbgK0LeL (ORCPT ); Fri, 27 Nov 2020 06:34:11 -0500 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 5B650ADCF; Fri, 27 Nov 2020 11:34:08 +0000 (UTC) Received: by quack2.suse.cz (Postfix, from userid 1000) id C86431E1327; Fri, 27 Nov 2020 12:34:07 +0100 (CET) From: Jan Kara To: Ted Tso Cc: , Jan Kara Subject: [PATCH 08/12] ext4: Combine ext4_handle_error() and save_error_info() Date: Fri, 27 Nov 2020 12:34:01 +0100 Message-Id: <20201127113405.26867-9-jack@suse.cz> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20201127113405.26867-1-jack@suse.cz> References: <20201127113405.26867-1-jack@suse.cz> Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org save_error_info() is always called together with ext4_handle_error(). Combine them into a single call and move unconditional bits out of save_error_info() into ext4_handle_error(). Signed-off-by: Jan Kara --- fs/ext4/super.c | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 2d7dc0908cdd..73a09b73fc11 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -592,9 +592,6 @@ static void __save_error_info(struct super_block *sb, int error, { struct ext4_sb_info *sbi = EXT4_SB(sb); - EXT4_SB(sb)->s_mount_state |= EXT4_ERROR_FS; - if (bdev_read_only(sb->s_bdev)) - return; /* We default to EFSCORRUPTED error... */ if (error == 0) error = EFSCORRUPTED; @@ -647,13 +644,19 @@ static void save_error_info(struct super_block *sb, int error, * used to deal with unrecoverable failures such as journal IO errors or ENOMEM * at a critical moment in log management. */ -static void ext4_handle_error(struct super_block *sb, bool force_ro) +static void ext4_handle_error(struct super_block *sb, bool force_ro, int error, + __u32 ino, __u64 block, + const char *func, unsigned int line) { journal_t *journal = EXT4_SB(sb)->s_journal; + EXT4_SB(sb)->s_mount_state |= EXT4_ERROR_FS; if (test_opt(sb, WARN_ON_ERROR)) WARN_ON_ONCE(1); + if (!bdev_read_only(sb->s_bdev)) + save_error_info(sb, error, ino, block, func, line); + if (sb_rdonly(sb) || (!force_ro && test_opt(sb, ERRORS_CONT))) return; @@ -710,8 +713,7 @@ void __ext4_error(struct super_block *sb, const char *function, sb->s_id, function, line, current->comm, &vaf); va_end(args); } - save_error_info(sb, error, 0, block, function, line); - ext4_handle_error(sb, force_ro); + ext4_handle_error(sb, force_ro, error, 0, block, function, line); } void __ext4_error_inode(struct inode *inode, const char *function, @@ -741,9 +743,8 @@ void __ext4_error_inode(struct inode *inode, const char *function, current->comm, &vaf); va_end(args); } - save_error_info(inode->i_sb, error, inode->i_ino, block, - function, line); - ext4_handle_error(inode->i_sb, false); + ext4_handle_error(inode->i_sb, false, error, inode->i_ino, block, + function, line); } void __ext4_error_file(struct file *file, const char *function, @@ -780,9 +781,8 @@ void __ext4_error_file(struct file *file, const char *function, current->comm, path, &vaf); va_end(args); } - save_error_info(inode->i_sb, EFSCORRUPTED, inode->i_ino, block, - function, line); - ext4_handle_error(inode->i_sb, false); + ext4_handle_error(inode->i_sb, false, EFSCORRUPTED, inode->i_ino, block, + function, line); } const char *ext4_decode_error(struct super_block *sb, int errno, @@ -849,8 +849,7 @@ void __ext4_std_error(struct super_block *sb, const char *function, sb->s_id, function, line, errstr); } - save_error_info(sb, -errno, 0, 0, function, line); - ext4_handle_error(sb, false); + ext4_handle_error(sb, false, -errno, 0, 0, function, line); } void __ext4_msg(struct super_block *sb, @@ -944,13 +943,13 @@ __acquires(bitlock) if (test_opt(sb, ERRORS_CONT)) { if (test_opt(sb, WARN_ON_ERROR)) WARN_ON_ONCE(1); + EXT4_SB(sb)->s_mount_state |= EXT4_ERROR_FS; __save_error_info(sb, EFSCORRUPTED, ino, block, function, line); schedule_work(&EXT4_SB(sb)->s_error_work); return; } ext4_unlock_group(sb, grp); - save_error_info(sb, EFSCORRUPTED, ino, block, function, line); - ext4_handle_error(sb, false); + ext4_handle_error(sb, false, EFSCORRUPTED, ino, block, function, line); /* * We only get here in the ERRORS_RO case; relocking the group * may be dangerous, but nothing bad will happen since the -- 2.16.4