[arch-projects] [PATCH 04/10] mtab: don't write to mtab if it is a symlink

Seblu seblu at seblu.net
Sat Apr 9 20:03:37 EDT 2011


On Sun, Apr 10, 2011 at 1:18 AM, Seblu <seblu at seblu.net> wrote:
> On Sun, Apr 3, 2011 at 3:35 PM, Tom Gundersen <teg at jklm.no> wrote:
>> On Sun, Apr 3, 2011 at 4:01 PM, Seblu <seblu at seblu.net> wrote:
>>> On Wed, Mar 30, 2011 at 8:01 PM, Tom Gundersen <teg at jklm.no> wrote:
>>>> In the future /etc/mtab should be a symlink to /proc/self/mounts, add
>>>> support for this in rc.sysinit to be prepared. While strictly not
>>>> needed, this makes it clear that the functionality can be removed once
>>>> we move over to using symlinks.
>>>>
>>>> This functionality is expected with the next release of util-linux
>>>> (2.20), but is already available in the current version if the
>>>> experimental libmount support is enabled.
>>>>
>>>> Signed-off-by: Tom Gundersen <teg at jklm.no>
>>>> ---
>>>>  rc.sysinit |   13 +++++++++----
>>>>  1 files changed, 9 insertions(+), 4 deletions(-)
>>>>
>>>> diff --git a/rc.sysinit b/rc.sysinit
>>>> index 69fdab3..1601e7a 100755
>>>> --- a/rc.sysinit
>>>> +++ b/rc.sysinit
>>>> @@ -279,11 +279,16 @@ fi
>>>>
>>>>  stat_busy "Mounting Local Filesystems"
>>>>  /bin/mount -n -o remount,rw /
>>>> -if [ -x /bin/findmnt -a -e /proc/self/mountinfo ]; then
>>>> -       /bin/findmnt -rnu -o SOURCE,TARGET,FSTYPE,OPTIONS >| /etc/mtab
>>>> -else
>>>> -       cat /proc/mounts >| /etc/mtab
>>>> +
>>>> +# don't touch /etc/mtab if it is a symlink to /proc/self/mounts
>>>> +if [ ! -L /etc/mtab ]; then
>>>> +       if [ -x /bin/findmnt -a -e /proc/self/mountinfo ]; then
>>>> +               /bin/findmnt -rnu -o SOURCE,TARGET,FSTYPE,OPTIONS >| /etc/mtab
>>>> +       else
>>>> +               cat /proc/mounts >| /etc/mtab
>>>> +       fi
>>>>  fi
>>>> +
>>>>  run_hook sysinit_premount
>>>>  # now mount all the local filesystems
>>>>  /bin/mount -a -t $NETFS -O no_netdev
>>>> --
>>>> 1.7.4.2
>>>>
>>>>
>>> Maybe you should use bash style with [[.
>>>
>>> Something like the follwing looks better
>>>
>>> if [[ -L /etc/mtab ]]; then
>>>  :
>>> elif [[ -x /bin/findmnt && -e /proc/self/mountinfo ]]; then
>>>  /bin/findmnt -rnu -o SOURCE,TARGET,FSTYPE,OPTIONS >| /etc/mtab
>>> else
>>>  cat /proc/mounts >| /etc/mtab
>>> fi
>>
>> Thanks, I'll change before I push.
>>
>> -t
>>
>
> Hey tom, you make a mistake copying my suggestion in commit
> 71a1b74eb778540d412705b09a24f1d2ba123a2b
>
> it's
> if [[ -L /etc/mtab ]]; then
>  :
>
> not
>
> if [[ -L /etc/mtab ]]; then
>  ;
>
> because the second cause a syntax error :/
>
> : is like true is bash.
>
> So current upstream is broken :/
>
> :: Mounting Local Filesystems                                            [BUSY]
> EXT4-fs (sda2): re-mounted. Opts: (null)
> /etc/rc.sysinit: line 278: syntax error near unexpected token `;'
> /etc/rc.sysinit: line 278: `    ;'
> INIT: Entering runlevel: 3
>
>
You also miss replace -a by && in line 279. ;)

-- 
Sébastien Luttringer
www.seblu.net


More information about the arch-projects mailing list