Bug#883735: initramfs-tools: automatic resume doesn't work for lvm swap partitions

2018-01-15 Thread Vladimir K
Hi.
I am also seenig this issue in initramfs-tools 0.130 with swap on LVM. Provided 
patch fixes it.



Bug#883735: Re: Bug#883735: initramfs-tools: automatic resume doesn't work for lvm swap partitions

2017-12-11 Thread James Cowgill
Hi,

On 07/12/17 01:30, Ben Hutchings wrote:
> Control: reopen -1
> Control: tag -1 patch moreinfo
> 
> On Thu, 2017-12-07 at 00:22 +, James Cowgill wrote:
>> Hi,
>>
>> On 07/12/17 00:06, Ben Hutchings wrote:
>>> On Wed, 2017-12-06 at 23:48 +, James Cowgill wrote:
 Package: initramfs-tools
 Version: 0.130
 Severity: normal

 Hi,

 I had noticed this bug for quite a while now, but since I rarely turn my
 machine off I left investigating what the problem was until now.
>>>
>>> [...]
 Is it possible (and a good idea) to store the /dev/mapper path instead
 of the blkid when the swap partition is on LVM?

 I managed to solve my specific issue by manually setting RESUME to the
 correct /dev/mapper path.
>>>
>>> This is the correct way to refer to LVs used as root, /usr or resume
>>> partition.  The reason for this is that lvm2 only activates VGs that
>>> are definitely needed, and there is no way to determine whether a
>>> filesystem UUID or label refers to an LV (or which VG it's in).
>>
>> Ok, but I don't understand why this can't be fixed. Why can't you
>> convert the /dev/dm-* path from /proc/swaps into a /dev/mapper path when
>> you generate the initramfs and store that instead?
> 
> Oh I see, I failed to parse 'automatic resume' as meaning automatic
> selection of the resume device.
> 
> Does the attached patch fix this for you?

Thanks, your patch does fix this for me.

James



signature.asc
Description: OpenPGP digital signature


Bug#883735: Re: Bug#883735: initramfs-tools: automatic resume doesn't work for lvm swap partitions

2017-12-06 Thread Ben Hutchings
Control: reopen -1
Control: tag -1 patch moreinfo

On Thu, 2017-12-07 at 00:22 +, James Cowgill wrote:
> Hi,
> 
> On 07/12/17 00:06, Ben Hutchings wrote:
> > On Wed, 2017-12-06 at 23:48 +, James Cowgill wrote:
> > > Package: initramfs-tools
> > > Version: 0.130
> > > Severity: normal
> > > 
> > > Hi,
> > > 
> > > I had noticed this bug for quite a while now, but since I rarely turn my
> > > machine off I left investigating what the problem was until now.
> > 
> > [...]
> > > Is it possible (and a good idea) to store the /dev/mapper path instead
> > > of the blkid when the swap partition is on LVM?
> > > 
> > > I managed to solve my specific issue by manually setting RESUME to the
> > > correct /dev/mapper path.
> > 
> > This is the correct way to refer to LVs used as root, /usr or resume
> > partition.  The reason for this is that lvm2 only activates VGs that
> > are definitely needed, and there is no way to determine whether a
> > filesystem UUID or label refers to an LV (or which VG it's in).
> 
> Ok, but I don't understand why this can't be fixed. Why can't you
> convert the /dev/dm-* path from /proc/swaps into a /dev/mapper path when
> you generate the initramfs and store that instead?

Oh I see, I failed to parse 'automatic resume' as meaning automatic
selection of the resume device.

Does the attached patch fix this for you?

Ben.

-- 
Ben Hutchings
Beware of programmers who carry screwdrivers. - Leonard Brandwein
diff --git a/hooks/resume b/hooks/resume
index 1032f7b19e77..3c0bef56a89f 100755
--- a/hooks/resume
+++ b/hooks/resume
@@ -46,11 +46,17 @@ else
 	# Try to autodetect the RESUME partition, using biggest swap?
 	resume_auto=$(grep ^/dev/ /proc/swaps | sort -rnk3 | head -n 1 | cut -d " " -f 1)
 	if [ -n "$resume_auto" ]; then
-		UUID=$(blkid -s UUID -o value "$resume_auto" || true)
+		if dm_name="$(dmsetup info -c --noheadings -o name "$resume_auto" 2>/dev/null)"; then
+			resume_auto_canon="/dev/mapper/$dm_name"
+		elif UUID=$(blkid -s UUID -o value "$resume_auto"); then
+			resume_auto_canon="UUID=$UUID"
+		else
+			resume_auto_canon=
+		fi
 		report_auto "The initramfs will attempt to resume from $resume_auto"
-		if [ -n "$UUID" ]; then
-			report_auto "(UUID=$UUID)"
-			resume_auto="UUID=$UUID"
+		if [ -n "$resume_auto_canon" ]; then
+			report_auto "($resume_auto_canon)"
+			resume_auto="$resume_auto_canon"
 		fi
 		report_auto "Set the RESUME variable to override this."
 	fi


signature.asc
Description: This is a digitally signed message part


Processed: Re: Bug#883735: Re: Bug#883735: initramfs-tools: automatic resume doesn't work for lvm swap partitions

2017-12-06 Thread Debian Bug Tracking System
Processing control commands:

> reopen -1
Bug #883735 {Done: Ben Hutchings } [initramfs-tools] 
initramfs-tools: automatic resume doesn't work for lvm swap partitions
Bug reopened
Ignoring request to alter fixed versions of bug #883735 to the same values 
previously set
> tag -1 patch moreinfo
Bug #883735 [initramfs-tools] initramfs-tools: automatic resume doesn't work 
for lvm swap partitions
Added tag(s) moreinfo and patch.

-- 
883735: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=883735
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems



Bug#883735: Re: Bug#883735: initramfs-tools: automatic resume doesn't work for lvm swap partitions

2017-12-06 Thread James Cowgill
Hi,

On 07/12/17 00:06, Ben Hutchings wrote:
> On Wed, 2017-12-06 at 23:48 +, James Cowgill wrote:
>> Package: initramfs-tools
>> Version: 0.130
>> Severity: normal
>>
>> Hi,
>>
>> I had noticed this bug for quite a while now, but since I rarely turn my
>> machine off I left investigating what the problem was until now.
> [...]
>> Is it possible (and a good idea) to store the /dev/mapper path instead
>> of the blkid when the swap partition is on LVM?
>>
>> I managed to solve my specific issue by manually setting RESUME to the
>> correct /dev/mapper path.
>
> This is the correct way to refer to LVs used as root, /usr or resume
> partition.  The reason for this is that lvm2 only activates VGs that
> are definitely needed, and there is no way to determine whether a
> filesystem UUID or label refers to an LV (or which VG it's in).

Ok, but I don't understand why this can't be fixed. Why can't you
convert the /dev/dm-* path from /proc/swaps into a /dev/mapper path when
you generate the initramfs and store that instead?

James



signature.asc
Description: OpenPGP digital signature


Bug#883735: initramfs-tools: automatic resume doesn't work for lvm swap partitions

2017-12-06 Thread James Cowgill
Package: initramfs-tools
Version: 0.130
Severity: normal

Hi,

I had noticed this bug for quite a while now, but since I rarely turn my
machine off I left investigating what the problem was until now.

Every time I boot my laptop, it prints a lot of messages like this,
before eventually giving up:

Begin: Waiting for suspend/resume device ...
Begin: Running /scripts/local-block ... done
[...]
Begin: Running /scripts/local-block ... done
Gave up waiting for suspend/resume device.

I traced this down to the swap device being on an LVM partition on my
laptop. The script which automatically determines which device to resume
from stores the blkid in the initramfs, but unfortunately the lvm2
local-block script does not know how to activate LVM partitions based on
blkid. This means the swap device is never created and the initramfs
will never be able to find it.

Is it possible (and a good idea) to store the /dev/mapper path instead
of the blkid when the swap partition is on LVM?

I managed to solve my specific issue by manually setting RESUME to the
correct /dev/mapper path.

Thanks,
James



signature.asc
Description: OpenPGP digital signature