[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <bug-195729-13602-XhKOe0NuqL@https.bugzilla.kernel.org/>
Date: Fri, 12 May 2017 14:54:17 +0000
From: bugzilla-daemon@...zilla.kernel.org
To: linux-ext4@...nel.org
Subject: [Bug 195729] JBD2: Spotted dirty metadata buffer (dev = sda1,
blocknr = 1766784).There's a risk of filesystem corruption in case of system
crash.
https://bugzilla.kernel.org/show_bug.cgi?id=195729
--- Comment #3 from jqiaoulk@...il.com ---
This is the root cause, which is pretty straightforward:
The spin lock is firstly acquired at the following function:
OutputResults CSTmMasterOutput::Start(const stm_display_mode_t* pModeLine) {
vibe_os_lock_resource(m_lock);
if(!this->SetOutputFormat(m_ulOutputFormat)) {
TRC;
goto stop_and_exit;
}
vibe_os_unlock_resource(m_lock);
}
and this->SetOutputFormat will eventually call vibe_os_clk_set_parent() as
below:
bool CSTmClockLLA::Enable {
vibe_os_clk_set_parent(output, source);
}
Based on the callstack, we know vibe_os_clk_set_parent will call
clk_set_parent().
clk_set_parent() is a basic kernel API that would potentially go to sleep,
based on the call stack in the log.
Therefore, CSTmMasterOutput::Start would potentially go to sleeps while holding
spin_Lock().
--
You are receiving this mail because:
You are watching the assignee of the bug.
Powered by blists - more mailing lists