All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ye Bin <yebin@huaweicloud.com>
To: djwong@kernel.org, linux-xfs@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, Ye Bin <yebin10@huawei.com>
Subject: [PATCH] xfs: fix possible assert failed in xfs_fs_put_super() when do cpu offline
Date: Tue, 14 Mar 2023 17:06:49 +0800	[thread overview]
Message-ID: <20230314090649.326642-1-yebin@huaweicloud.com> (raw)

From: Ye Bin <yebin10@huawei.com>

There's a issue when do cpu offline test:
CPU: 48 PID: 1168152 Comm: umount Kdump: loaded Tainted: G L
pstate: 60000005 (nZCv daif -PAN -UAO -TCO BTYPE=--)
pc : assfail+0x8c/0xb4
lr : assfail+0x38/0xb4
sp : ffffa00033ce7c40
x29: ffffa00033ce7c40 x28: ffffa00014794f30
x27: ffffa00014f6ca20 x26: 1fffe0120b2e2030
x25: ffff009059710188 x24: ffff00886c0a4650
x23: 1fffe0110d8148ca x22: ffff009059710180
x21: ffffa00015155680 x20: ffff00886c0a4000
x19: 0000000000000001 x18: 0000000000000000
x17: 0000000000000000 x16: 0000000000000000
x15: 0000000000000007 x14: 1fffe00304cef265
x13: ffff00182642b200 x12: ffff8012d37757bf
x11: 1fffe012d37757be x10: ffff8012d37757be
x9 : ffffa00010603a0c x8 : 0000000041b58ab3
x7 : ffff94000679cf44 x6 : 00000000ffffffc0
x5 : 0000000000000021 x4 : 00000000ffffffca
x3 : 1ffff40002a27ee1 x2 : 0000000000000004
x1 : 0000000000000000 x0 : ffffa0001513f000
Call trace:
 assfail+0x8c/0xb4
 xfs_destroy_percpu_counters+0x98/0xa4
 xfs_fs_put_super+0x1a0/0x2a4
 generic_shutdown_super+0x104/0x2c0
 kill_block_super+0x8c/0xf4
 deactivate_locked_super+0xa4/0x164
 deactivate_super+0xb0/0xdc
 cleanup_mnt+0x29c/0x3ec
 __cleanup_mnt+0x1c/0x30
 task_work_run+0xe0/0x200
 do_notify_resume+0x244/0x320
 work_pending+0xc/0xa0

We analyzed the data in vmcore is correct. But triggered above issue.
As f689054aace2 ("percpu_counter: add percpu_counter_sum_all interface")
commit describes there is a small race window between the online CPUs traversal
of percpu_counter_sum and the CPU offline callback. This means percpu_counter_sum()
may return incorrect result during cpu offline.
To solve above issue use percpu_counter_sum_all() interface to make sure
result is correct to prevent false triggering of assertions.

Signed-off-by: Ye Bin <yebin10@huawei.com>
---
 fs/xfs/xfs_super.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
index 2479b5cbd75e..c0ce66f966ee 100644
--- a/fs/xfs/xfs_super.c
+++ b/fs/xfs/xfs_super.c
@@ -1076,7 +1076,7 @@ xfs_destroy_percpu_counters(
 	percpu_counter_destroy(&mp->m_ifree);
 	percpu_counter_destroy(&mp->m_fdblocks);
 	ASSERT(xfs_is_shutdown(mp) ||
-	       percpu_counter_sum(&mp->m_delalloc_blks) == 0);
+	       percpu_counter_sum_all(&mp->m_delalloc_blks) == 0);
 	percpu_counter_destroy(&mp->m_delalloc_blks);
 	percpu_counter_destroy(&mp->m_frextents);
 }
-- 
2.31.1


             reply	other threads:[~2023-03-14  9:07 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-14  9:06 Ye Bin [this message]
2023-03-14 16:31 ` [PATCH] xfs: fix possible assert failed in xfs_fs_put_super() when do cpu offline Darrick J. Wong
2023-03-14 22:13   ` Dave Chinner
2023-03-15  3:06     ` Darrick J. Wong

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=20230314090649.326642-1-yebin@huaweicloud.com \
    --to=yebin@huaweicloud.com \
    --cc=djwong@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-xfs@vger.kernel.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.