From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Ye Bin <yebin10@huawei.com>, Jan Kara <jack@suse.cz>,
Theodore Ts'o <tytso@mit.edu>, Sasha Levin <sashal@kernel.org>,
adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org
Subject: [PATCH AUTOSEL 5.10 13/31] ext4: forbid commit inconsistent quota data when errors=remount-ro
Date: Fri, 29 Mar 2024 08:48:30 -0400 [thread overview]
Message-ID: <20240329124903.3093161-13-sashal@kernel.org> (raw)
In-Reply-To: <20240329124903.3093161-1-sashal@kernel.org>
From: Ye Bin <yebin10@huawei.com>
[ Upstream commit d8b945fa475f13d787df00c26a6dc45a3e2e1d1d ]
There's issue as follows When do IO fault injection test:
Quota error (device dm-3): find_block_dqentry: Quota for id 101 referenced but not present
Quota error (device dm-3): qtree_read_dquot: Can't read quota structure for id 101
Quota error (device dm-3): do_check_range: Getting block 2021161007 out of range 1-186
Quota error (device dm-3): qtree_read_dquot: Can't read quota structure for id 661
Now, ext4_write_dquot()/ext4_acquire_dquot()/ext4_release_dquot() may commit
inconsistent quota data even if process failed. This may lead to filesystem
corruption.
To ensure filesystem consistent when errors=remount-ro there is need to call
ext4_handle_error() to abort journal.
Signed-off-by: Ye Bin <yebin10@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20240119062908.3598806-1-yebin10@huawei.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/ext4/super.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index e386d67cff9d1..0149d3c2cfd78 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -6205,6 +6205,10 @@ static int ext4_write_dquot(struct dquot *dquot)
if (IS_ERR(handle))
return PTR_ERR(handle);
ret = dquot_commit(dquot);
+ if (ret < 0)
+ ext4_error_err(dquot->dq_sb, -ret,
+ "Failed to commit dquot type %d",
+ dquot->dq_id.type);
err = ext4_journal_stop(handle);
if (!ret)
ret = err;
@@ -6221,6 +6225,10 @@ static int ext4_acquire_dquot(struct dquot *dquot)
if (IS_ERR(handle))
return PTR_ERR(handle);
ret = dquot_acquire(dquot);
+ if (ret < 0)
+ ext4_error_err(dquot->dq_sb, -ret,
+ "Failed to acquire dquot type %d",
+ dquot->dq_id.type);
err = ext4_journal_stop(handle);
if (!ret)
ret = err;
@@ -6240,6 +6248,10 @@ static int ext4_release_dquot(struct dquot *dquot)
return PTR_ERR(handle);
}
ret = dquot_release(dquot);
+ if (ret < 0)
+ ext4_error_err(dquot->dq_sb, -ret,
+ "Failed to release dquot type %d",
+ dquot->dq_id.type);
err = ext4_journal_stop(handle);
if (!ret)
ret = err;
--
2.43.0
next prev parent reply other threads:[~2024-03-29 12:49 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-29 12:48 [PATCH AUTOSEL 5.10 01/31] Input: synaptics-rmi4 - fail probing if memory allocation for "phys" fails Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 02/31] pinctrl: renesas: checker: Limit cfg reg enum checks to provided IDs Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 03/31] VMCI: Fix memcpy() run-time warning in dg_dispatch_as_host() Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 04/31] sysv: don't call sb_bread() with pointers_lock held Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 05/31] quota: Fix potential NULL pointer dereference Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 06/31] scsi: lpfc: Fix possible memory leak in lpfc_rcv_padisc() Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 07/31] panic: Flush kernel log buffer at the end Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 08/31] isofs: handle CDs with bad root inode but good Joliet root directory Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 09/31] arm64: dts: rockchip: fix rk3328 hdmi ports node Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 10/31] arm64: dts: rockchip: fix rk3399 " Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 11/31] media: sta2x11: fix irq handler cast Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 12/31] ext4: add a hint for block bitmap corrupt state in mb_groups Sasha Levin
2024-03-29 12:48 ` Sasha Levin [this message]
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 14/31] drm/amd/display: Fix nanosec stat overflow Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 15/31] pstore/zone: Add a null pointer check to the psz_kmsg_read Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 16/31] tools/power x86_energy_perf_policy: Fix file leak in get_pkg_num() Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 17/31] SUNRPC: increase size of rpc_wait_queue.qlen from unsigned short to unsigned int Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 18/31] Revert "ACPI: PM: Block ASUS B1400CEAE from suspend to idle by default" Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 19/31] sparc: vdso: Disable UBSAN instrumentation Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 20/31] libperf evlist: Avoid out-of-bounds access Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 21/31] PCI: Mark LSI FW643 to avoid bus reset Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 22/31] sh: Fix build with CONFIG_UBSAN=y Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 23/31] btrfs: handle chunk tree lookup error in btrfs_relocate_sys_chunks() Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 24/31] btrfs: export: handle invalid inode or root reference in btrfs_get_parent() Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 25/31] btrfs: send: handle path ref underflow in header iterate_inode_ref() Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 26/31] block: prevent division by zero in blk_rq_stat_sum() Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 27/31] RDMA/cm: add timeout to cm_destroy_id wait Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 28/31] Input: allocate keycode for Display refresh rate toggle Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 29/31] platform/x86: touchscreen_dmi: Add an extra entry for a variant of the Chuwi Vi8 tablet Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 30/31] ktest: force $buildonly = 1 for 'make_warnings_file' test type Sasha Levin
2024-03-29 12:48 ` [PATCH AUTOSEL 5.10 31/31] ring-buffer: use READ_ONCE() to read cpu_buffer->commit_page in concurrent environment Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240329124903.3093161-13-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=adilger.kernel@dilger.ca \
--cc=jack@suse.cz \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=tytso@mit.edu \
--cc=yebin10@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox