Due to journal writes being single-threaded in the userspace implementation, if a slow disk can't keep up with the journal writes, it can lead to the writes getting too far ahead of the disk and block waiting for prior writes to complete, which they can't because they're on the same thread that's currently blocking.
This issue does not occur in the kernel implementation due to journal writes being multi-threaded (or at least have proper concurrency).
Due to journal writes being single-threaded in the userspace implementation, if a slow disk can't keep up with the journal writes, it can lead to the writes getting too far ahead of the disk and block waiting for prior writes to complete, which they can't because they're on the same thread that's currently blocking.
This issue does not occur in the kernel implementation due to journal writes being multi-threaded (or at least have proper concurrency).