On Thu, Mar 4, 2010 at 1:15 PM, Pavel Machek <[email protected]> wrote:
> Hi!
>
>> > My thought exactly. ?This is the only approach that also solves the
>> > following race:
>> >
>> > ? ? A driver is unloaded at the same time as a suspend starts.
>> >
>> > ? ? The writeback thread gets frozen.
>> >
>> > ? ? Then before the rmmod thread is frozen, it calls del_gendisk.
>> >
>> > Delaying things by means of a workqueue (or the equivalent) might also
>> > work, but it doesn't seem as safe. ?For example, some important
>> > writebacks might end up getting delayed until too late.
>
> Delaying writebacks during sleep should be ok... That's why we do
> sync() after userspace is frozen -- nothing really important should be
> waiting for writeback after that point.
Has this been fixed, or has a consensus about how to fix this been
achieved? I'm hitting the same problem and have some time to work on a
fix.
Matt
On Friday 23 April 2010, Matt Reimer wrote:
> On Thu, Mar 4, 2010 at 1:15 PM, Pavel Machek <[email protected]> wrote:
> > Hi!
> >
> >> > My thought exactly. This is the only approach that also solves the
> >> > following race:
> >> >
> >> > A driver is unloaded at the same time as a suspend starts.
> >> >
> >> > The writeback thread gets frozen.
> >> >
> >> > Then before the rmmod thread is frozen, it calls del_gendisk.
> >> >
> >> > Delaying things by means of a workqueue (or the equivalent) might also
> >> > work, but it doesn't seem as safe. For example, some important
> >> > writebacks might end up getting delayed until too late.
> >
> > Delaying writebacks during sleep should be ok... That's why we do
> > sync() after userspace is frozen -- nothing really important should be
> > waiting for writeback after that point.
>
> Has this been fixed,
No, it hasn't.
> or has a consensus about how to fix this been
> achieved? I'm hitting the same problem and have some time to work on a
> fix.
Generally, it looks like del_gendisk should thaw writeback threads, but not
during suspend, only during resume.
Rafael