Re: Report 2 in ext4 and journal based on v5.17-rc1

Theodore Ts'o
2022-03-05T03:26:35Z

On Fri, Mar 04, 2022 at 09:42:37AM +0900, Byungchul Park wrote:
>
> All contexts waiting for any of the events in the circular dependency
> chain will be definitely stuck if there is a circular dependency as I
> explained. So we need another wakeup source to break the circle. In
> ext4 code, you might have the wakeup source for breaking the circle.
>
> What I agreed with is:
>
> The case that 1) the circular dependency is unevitable 2) there are
> another wakeup source for breadking the circle and 3) the duration
> in sleep is short enough, should be acceptable.
>
> Sounds good?

These dependencies are part of every single ext4 metadata update,
and if there were any unnecessary sleeps, this would be a major
performance gap, and this is a very well studied part of ext4.

There are some places where we sleep, sure. In some case
start_this_handle() needs to wait for a commit to complete, and the
commit thread might need to sleep for I/O to complete. But the moment
the thing that we're waiting for is complete, we wake up all of the
processes on the wait queue. But in the case where we wait for I/O
complete, that wakeupis coming from the device driver, when it
receives the the I/O completion interrupt from the hard drive. Is
that considered an "external source"? Maybe DEPT doesn't recognize
that this is certain to happen just as day follows the night? (Well,
maybe the I/O completion interrupt might not happen if the disk drive
bursts into flames --- but then, you've got bigger problems. :-)

In any case, if DEPT is going to report these "circular dependencies
as bugs that MUST be fixed", it's going to be pure noise and I will
ignore all DEPT reports, and will push back on having Lockdep replaced
by DEPT --- because Lockdep give us actionable reports, and if DEPT
can't tell the difference between a valid programming pattern and a
bug, then it's worse than useless.

Sounds good?

- Ted