[linux-pm] BUG while suspending to swap on LVM

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Monday 14 August 2006 22:03, Laurent Riffard wrote:
> Le 14.08.2006 21:16, Rafael J. Wysocki a écrit :
> > On Monday 14 August 2006 19:48, Laurent Riffard wrote:
> >> Le 14.08.2006 19:30, Rafael J. Wysocki a écrit :
> >>> Hi,
> >>>
> >>> Thanks for the report.
> >>>
> >>> On Monday 14 August 2006 18:49, Laurent Riffard wrote:
> >>>> Hello, 
> >>>>
> >>>> I hit a BUG while I was trying to suspend to a swap device on LVM. 
> >>>> The call trace looks like this (see attached picture for detailed 
> >>>> stack trace):
> >>>>
> >>>> EIP is at _raw_spin_lock
> >>>> Call Trace:
> >>>>   die
> >>>>   do_page_fault
> >>>>   error_code
> >>>>   _spin_lock_irq
> >>>>   generic_unplug_device
> >>>>   wait_on_bio_chain
> >>>>   swap_write_image
> >>> This should be swap_write_page().
> >> right.
> >>>>   swsusp_write
> >>>>   pm_suspend_disk
> >>>>   enter_state
> >>>>   state_store
> >>>>   susbsys_attr_store
> >>>>   sysfs_write_file
> >>>>   vfs_write
> >>>>   sys_write
> >>>>   sysenter_past_esp
> >>>>
> >>>> It was Linux 2.6.18-rc4-mm1 booted with:
> >>>> root=/dev/vglinux1/lvroot video=vesafb:mtrr splash=silent resume=/dev/mapper/vglinux1-lvswap init 1
> >>> Does the unpatched 2.6.18-rc4 work in this configuration?
> >> Will try.
> > 
> > Well, I'm afraid it won't work.
> 
> guess what? 2.6.18-rc4 worked!

Strange ...

> > Can you please try the appended patch?
> 
> Ok, I'll try on 2.6.18-rc4-mm1.
>  
> > Rafael
> > 
> > 
> > ---
> >  mm/swapfile.c |    3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> > 
> > Index: linux-2.6.18-rc4-mm1/mm/swapfile.c
> > ===================================================================
> > --- linux-2.6.18-rc4-mm1.orig/mm/swapfile.c	2006-08-13 14:54:43.000000000 +0200
> > +++ linux-2.6.18-rc4-mm1/mm/swapfile.c	2006-08-14 21:09:09.000000000 +0200
> > @@ -442,11 +442,12 @@ int swap_type_of(dev_t device)
> >  
> >  		if (!(swap_info[i].flags & SWP_WRITEOK))
> >  			continue;
> > +
> >  		if (!device) {
> >  			spin_unlock(&swap_lock);
> >  			return i;
> >  		}
> > -		inode = swap_info->swap_file->f_dentry->d_inode;
> > +		inode = swap_info[i].swap_file->f_dentry->d_inode;
> >  		if (S_ISBLK(inode->i_mode) &&
> >  		    device == MKDEV(imajor(inode), iminor(inode))) {
> >  			spin_unlock(&swap_lock);
> 
> Does it mean it was mistaken on swap device ?

Yes.  If your resume device is not the first swap, it won't work without
the patch.

> I did not pay attention on which swap device was online or not.

Please do when you test it. ;-)

Greetings,
Rafael


-- 
You never change things by fighting the existing reality.
		R. Buckminster Fuller



[Index of Archives]     [Linux ACPI]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [CPU Freq]     [Kernel Newbies]     [Fedora Kernel]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux