== SRU Justification ==
This upstream bug has been confirmed to affect Ubuntu users. As per the
fix commit (below), the most frequent symptom is a crash of Xorg/Xwayland,
i.e. killing the entire GUI, when a laptop is woken from system sleep.
Frequency of the bug is described as once every few days.
When blk_queue_enter() waits for a queue to unfreeze, or unset the
PREEMPT_ONLY flag, do not allow it to be interrupted by a signal.
The PREEMPT_ONLY flag was introduced later in commit 3a0a529971ec
("block, scsi: Make SCSI quiesce and resume work reliably"). Note the SCSI
device is resumed asynchronously, i.e. after un-freezing userspace tasks.
So that commit exposed the bug as a regression in v4.15. A mysterious
SIGBUS (or -EIO) sometimes happened during the time the device was being
resumed. Most frequently, there was no kernel log message, and we saw Xorg
or Xwayland killed by SIGBUS.
while killall -SIGUSR1 dd; do sleep 0.1; done & \
echo mem > /sys/power/state ; \
sleep 5; killall dd # stop after 5 seconds
The interruptible wait was added to blk_queue_enter in
commit 3ef28e83ab15 ("block: generic request_queue reference counting").
Before then, the interruptible wait was only in blk-mq, but I don't think
it could ever have been correct.
On Fri, Jun 29, 2018 at 09:39:33AM -0400, Joseph Salisbury wrote:
> BugLink: http://bugs.launchpad.net/bugs/1776887 >
> == SRU Justification ==
> This upstream bug has been confirmed to affect Ubuntu users. As per the
> fix commit (below), the most frequent symptom is a crash of Xorg/Xwayland,
> i.e. killing the entire GUI, when a laptop is woken from system sleep.
> Frequency of the bug is described as once every few days.
>  E.g. this user confirms the bug & very specific workaround:
> https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/1760450/comments/11 >  E.g. this log of crashes: https://bugzilla.redhat.com/show_bug.cgi?id=1553979#c23 >
> This is a bug in blk-core.c. It is not specific to any one hardware driver.
> Technically the suspend bug is triggered by the SCSI core - which is used by *all SATA devices*.
> == Fix ==
> 1dc3039bc87a ("block: do not use interruptible wait anywhere")
> == Regression Potential ==
> Low. This patch has been sent to stable, so it has had additional
> upstream review.
> == Test Case ==
> A test kernel was built with this patch and tested by the original bug reporter.
> The bug reporter states the test kernel resolved the bug.