Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp5037794rdb; Tue, 12 Dec 2023 17:50:46 -0800 (PST) X-Google-Smtp-Source: AGHT+IGblPZLk+Z/+qJawPq3jtMZyQDKtMxMaerl7rUDIdKGb/3VAx1pubJUtH0hx4WfaeS7WWso X-Received: by 2002:a05:6e02:20c5:b0:35d:693a:432a with SMTP id 5-20020a056e0220c500b0035d693a432amr11106135ilq.3.1702432246709; Tue, 12 Dec 2023 17:50:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702432246; cv=none; d=google.com; s=arc-20160816; b=ngn1LkYWfoHq7+R5q+OWXKJ++EVUdyCC/kedg02bxYg8n34auDoOhlfYI/vQ91dM03 GKLVYRr963JXVmTr7f8aSl5NCSVaT1GAILbv/P2oWlhALLRP7Yx/Q/jVGkpRjnkE3wmF 0Pys3ThFCk4GltBs1+m+upEceQHdp0nKjPsggm3srB9eEw2Oitf8iK2p2sj0DX8II+DT Vt+59R2wHqYAVPiqobADczqhZIvNIpIH9RyePKYTc5l/QZg7rsX29nnEevqksEcGYTfR XSPOkRKoCNLiZu8ebxy9y4oF3w6Ul+ICNHOm4efBxEZBpW+OBAsEZrObKNqD3y3hFQHt aJaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=xBAOONjJsuuW4NkVzzMDDT9Op/fheDZGYOKualPOjxY=; fh=1ocxhdHf0Y/iI8w2wCrH9lkxpX+94NXA0fnSi498MuY=; b=YGDITpefjwx1AJRgKNOf6pVw8on/Z6/xBQjKIi0RvGP1lBV4UGuXP/b8RShuEeuDEe Fk+y1X+Ck9ydiCRba6RmFna50/SuB0erOAJKNea0THee79sfVl/53TYxhOH/TWFcr9HC V/ul9xpoc99Wk/mnNFFlk5nJ13g9p7S8npxtPSRrtufURzMJCCIpX100OpEvH8lEOXx2 GHMtXGhlnQ07KKaTZCLt8vYMDGcQKNzjWXdvf3yuss/KWQL9ZF7COj9CtbuJf6pht2gZ 2JbJNGPBAgmryHkze01T/EGCoO3Hi4pVAeAR88doBDo0Ipo/vibWrRn4Y5/rbkjgb9pa 1n5A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-ext4+bounces-416-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-ext4+bounces-416-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [2604:1380:40f1:3f00::1]) by mx.google.com with ESMTPS id v14-20020a17090a6b0e00b0027ffcd44adasi8820951pjj.133.2023.12.12.17.50.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Dec 2023 17:50:46 -0800 (PST) Received-SPF: pass (google.com: domain of linux-ext4+bounces-416-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) client-ip=2604:1380:40f1:3f00::1; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-ext4+bounces-416-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-ext4+bounces-416-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id B22F7B20F62 for ; Wed, 13 Dec 2023 01:50:42 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B5FF520F2; Wed, 13 Dec 2023 01:50:37 +0000 (UTC) X-Original-To: linux-ext4@vger.kernel.org X-Greylist: delayed 988 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Tue, 12 Dec 2023 17:50:28 PST Received: from szxga04-in.huawei.com (szxga04-in.huawei.com [45.249.212.190]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F3A2CAD for ; Tue, 12 Dec 2023 17:50:28 -0800 (PST) Received: from mail.maildlp.com (unknown [172.19.88.163]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4SqdLB1qHmz1wnhW; Wed, 13 Dec 2023 09:33:54 +0800 (CST) Received: from kwepemm000013.china.huawei.com (unknown [7.193.23.81]) by mail.maildlp.com (Postfix) with ESMTPS id DEC9A1800DD; Wed, 13 Dec 2023 09:34:00 +0800 (CST) Received: from huawei.com (10.175.104.67) by kwepemm000013.china.huawei.com (7.193.23.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 13 Dec 2023 09:33:59 +0800 From: Zhihao Cheng To: , CC: , Subject: [PATCH v2 4/5] jbd2: Abort journal when detecting metadata writeback error of fs dev Date: Wed, 13 Dec 2023 09:32:23 +0800 Message-ID: <20231213013224.2100050-5-chengzhihao1@huawei.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231213013224.2100050-1-chengzhihao1@huawei.com> References: <20231213013224.2100050-1-chengzhihao1@huawei.com> Precedence: bulk X-Mailing-List: linux-ext4@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To kwepemm000013.china.huawei.com (7.193.23.81) This is a replacement solution of commit bc71726c725767 ("ext4: abort the filesystem if failed to async write metadata buffer"), JBD2 can detect metadata writeback error of fs dev by 'j_fs_dev_wb_err'. Signed-off-by: Zhihao Cheng Reviewed-by: Jan Kara --- fs/jbd2/transaction.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/fs/jbd2/transaction.c b/fs/jbd2/transaction.c index 5f08b5fd105a..cb0b8d6fc0c6 100644 --- a/fs/jbd2/transaction.c +++ b/fs/jbd2/transaction.c @@ -1231,11 +1231,25 @@ static bool jbd2_write_access_granted(handle_t *handle, struct buffer_head *bh, int jbd2_journal_get_write_access(handle_t *handle, struct buffer_head *bh) { struct journal_head *jh; + journal_t *journal; int rc; if (is_handle_aborted(handle)) return -EROFS; + journal = handle->h_transaction->t_journal; + if (jbd2_check_fs_dev_write_error(journal)) { + /* + * If the fs dev has writeback errors, it may have failed + * to async write out metadata buffers in the background. + * In this case, we could read old data from disk and write + * it out again, which may lead to on-disk filesystem + * inconsistency. Aborting journal can avoid it happen. + */ + jbd2_journal_abort(journal, -EIO); + return -EIO; + } + if (jbd2_write_access_granted(handle, bh, false)) return 0; -- 2.39.2