Re: [BUG] Code reordering in swsusp breaks suspend on SMP systems

Maxim
2007-03-22T00:25:18Z

On Thursday 22 March 2007 01:47:05 Nigel Cunningham wrote:
> Hi.
>
> On Wed, 2007-03-21 at 22:38 +0100, Rafael J. Wysocki wrote:
> > > Do you know exactly which mutex was being waited on and where it was
> > > taken? If you can say that, it would be much more helpful.
>
> Yeah, me too, but assuming too much sometimes bites me :)
>
> > I think this is the XFS problem with freezable workqueues.
> >
> > Maxim, please try to apply the appended patch and see if it helps.
>
> Thanks for your subsequent messages, Maxim. Could you confirm for us
> that the patch Rafael attached fixes it?
>
> Regards,
>
> Nigel
>
> > ---
> > Since freezable workqueues are broken in 2.6.21-rc
> > (cf. http://marc.theaimsgroup.com/?l=linux-kernel&m=116855740612755,
> > http://marc.theaimsgroup.com/?l=linux-kernel&m=117261312523921&w=2)
> > it's better to remove them altogether for 2.6.21 and change the only user of
> > them (XFS) accordingly.
> >
> > ---
> > fs/xfs/linux-2.6/xfs_buf.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > Index: linux-2.6.21-rc4/fs/xfs/linux-2.6/xfs_buf.c
> > ===================================================================
> > --- linux-2.6.21-rc4.orig/fs/xfs/linux-2.6/xfs_buf.c
> > +++ linux-2.6.21-rc4/fs/xfs/linux-2.6/xfs_buf.c
> > @@ -1829,11 +1829,11 @@ xfs_buf_init(void)
> > if (!xfs_buf_zone)
> > goto out_free_trace_buf;
> >
> > - xfslogd_workqueue = create_freezeable_workqueue("xfslogd");
> > + xfslogd_workqueue = create_workqueue("xfslogd");
> > if (!xfslogd_workqueue)
> > goto out_free_buf_zone;
> >
> > - xfsdatad_workqueue = create_freezeable_workqueue("xfsdatad");
> > + xfsdatad_workqueue = create_workqueue("xfsdatad");
> > if (!xfsdatad_workqueue)
> > goto out_destroy_xfslogd_workqueue;
> >
>
>

Hello,

I can confirm now that the above patch work,

First as I said I did try to suspend with this patch and without XFS, and it did work,
Now I reverted it and now system still suspends correctly without xfs module loaded ( I didn't tell you that i use now ext3,
and that I generally compile everything in kernel, so i put XFS too, because I used it once, and I still have a XFS disk image)

But system hangs with XFS loaded, so this patch works.

Regards,
Maxim Levitsky