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

Bug#576537: Incorrect labels generated in /etc/fstab during PATA conversion



On Mon, 2010-04-05 at 18:38 +0200, Moritz Muehlenhoff wrote:
> On Mon, Apr 05, 2010 at 04:48:13PM +0100, Ben Hutchings wrote:
> > On Mon, 2010-04-05 at 16:12 +0200, Moritz Muehlenhoff wrote:
> > > Package: linux-base
> > > Version: 2.6.32-10
> > > Severity: normal
> > > 
> > > The conversion on my Thinkpad X31 seems to have generated incorrect
> > > labels, which lead to the home partition not being mounted automatically:
> > 
> > Oops.
> > 
> > > This is the /etc/fstab which was generated:
> > > 
> > > # /etc/fstab: static file system information.
> > > #
> > > # <file system> <mount point>   <type>  <options>       <dump>  <pass>
> > > proc            /proc           proc    defaults        0       0
> > > # /dev/hda1       /               ext3    defaults,errors=remount-ro 0       1
> > > LABEL=\x2f       /               ext3    defaults,errors=remount-ro 0       1
> > > # /dev/hda6       /home           ext3    defaults,noatime 0       2
> > > LABEL=\x2fhome       /home           ext3    defaults,noatime 0       2
> > > # /dev/hda5       none            swap    sw              0       0
> > > UUID=0603958c-bb68-46df-940b-c562b9fdb4aa       none            swap    sw              0       0
> > > /dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0
> > > /dev/sda        /stick          vfat    rw,user,noauto  0       0
> > > 
> > > The labels itself seem correct:
> > > 
> > > root@galadriel:~# e2label /dev/sda1
> > > /
> > > root@galadriel:~# e2label /dev/sda6
> > > /home
> > > root@galadriel:~#
> > > 
> > > I have no idea where "\x2f" instead of "/" is coming from?
> > [...]
> > 
> > /sbin/blkid -o udev /dev/sda1 | grep ^ID_FS_LABEL_ENC
> > 
> > We definitely do need to escape whitespace and I thought libblkid would
> > accept the escaped strings.  Evidently not.  I think we may just have to
> > ignore labels with whitespace in, and go for UUIDs on those devices.
> > (We already prefer UUIDs but it looks like those partitions don't have
> > them.)
> 
> At least blkid shows a UUID:
> 
> root@galadriel:~# /sbin/blkid -o udev /dev/sda1
> ID_FS_LABEL=/
> ID_FS_LABEL_ENC=\x2f
> ID_FS_UUID=6af102ec-0002-499f-b85d-193ecec7993e
> ID_FS_UUID_ENC=6af102ec-0002-499f-b85d-193ecec7993e
> ID_FS_SEC_TYPE=ext2
> ID_FS_TYPE=ext3
> 
> Or was the code which prefers UUIDs over labels added post -10?

Some experimental versions preferred labels, but I changed this
behaviour to be consistent with fresh installations.  However it looks
like there's a bug in the ID selection code such that we still use
labels sometimes.

> The "\x2f" encoding is applied through the blkid_encode_string() 
> function from shlibs/blkid/src/encode.c of util-linux:

I know.

> /**
>  * blkid_encode_string:
>  * @str: input string to be encoded
>  * @str_enc: output string to store the encoded input string
>  * @len: maximum size of the output string, which may be
>  *       four times as long as the input string
>  *
>  * Encode all potentially unsafe characters of a string to the
>  * corresponding hex value prefixed by '\x'.
>  *
>  * Returns: 0 if the entire string was copied, non-zero otherwise.
>  **/
> int blkid_encode_string(const char *str, char *str_enc, size_t len)
> 
> Maybe we should convert it back in linux-base.postinst?

We can't do that wholesale because (1) whitespace in a label will break
most of the configuration files we deal with and (2) in some
configuration files we have to use /dev/disk/by-label/$label and there
the escaped syntax is correct.

Ben.

-- 
Ben Hutchings
Once a job is fouled up, anything done to improve it makes it worse.

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


Reply to: