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

Andrew Morton
2007-03-22T07:32:38Z

On Thu, 22 Mar 2007 08:23:39 +0100 "Rafael J. Wysocki" <rjw@sisk.pl> wrote:

> On Thursday, 22 March 2007 05:51, David Chinner wrote:
> > On Wed, Mar 21, 2007 at 10:38:33PM +0100, Rafael J. Wysocki wrote:
> > >
> > > I think this is the XFS problem with freezable workqueues.
> > >
> > > Maxim, please try to apply the appended patch and see if it helps.
> > >
> > > Greetings,
> > > Rafael
> > >
> > >
> > > ---
> > > 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;
> > >
> >
> > Acked-by: Dave Chinner <dgc@sgi.com>
> >
> > Rafael, it sounds like this really needs to go into the next -rc
> > kernel. Can you push it to Linus?
>
> I tried, but Andrew resent it to you. :-)
>
> Andrew, could we please merge it?

Sure.

It shouldn't be this hard :(