Re: Freezable workqueue blocks non-freezable workqueue during the system resume process

From: Tejun Heo
Date: Fri Mar 11 2016 - 12:56:21 EST

Hello, Jan.

On Thu, Mar 03, 2016 at 10:33:10AM +0100, Jan Kara wrote:
> > Ugh... that's nasty. I wonder whether the right thing to do is making
> > writeback workers non-freezable. IOs are supposed to be blocked from
> > lower layer anyway. Jan, what do you think?
> Well no, at least currently IO is not blocked in lower layers AFAIK - for
> that you'd need to freeze block devices & filesystems and there are issues

At least libata does and I think SCSI does too, but yeah, there
probably are drivers which depend on block layer blocking IOs, which
btw is a pretty fragile way to go about as upper layers might not be
the only source of activities.

> with that (Jiri Kosina was the last one which was trying to make this work
> AFAIR). And I think you need to stop writeback (and generally any IO) to be
> generated so that it doesn't interact in a strange way with device drivers
> being frozen. So IMO until suspend freezes filesystems & devices properly
> you have to freeze writeback workqueue.

I still think the right thing to do is plugging that block layer or
low level drivers. It's like we're trying to plug multiple sources
when we can plug the point where they come together anyway.