Bug 148474

Summary: initrd might fail with reiserfs and separate journal device
Product: [openSUSE] SUSE Linux 10.1 Reporter: Harald Koenig <koenig>
Component: BasesystemAssignee: Hannes Reinecke <hare>
Status: RESOLVED FIXED QA Contact: E-mail List <qa-bugs>
Severity: Normal    
Priority: P5 - None    
Version: Beta 3   
Target Milestone: ---   
Hardware: Other   
OS: Other   
Whiteboard:
Found By: Other Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Harald Koenig 2006-02-06 18:44:43 UTC
tracking down a initrd problem with reiserfs (not this one) I browsed the
"init" script in the initrd with reiserfs and found the following code:

        # check filesystem if possible
        if [ -n "$rootfstype" -a -x /bin/fsck.${rootfstype} ]; then
        ...
==>         [ "$rootfstype" = "reiserfs" -a -n "$journaldev" ] && rootfstype="${rootfstype} -j $journaldev"
            fsck -t $rootfstype -V -a $rootdev
        ...
        fi
        ...
        echo "Mounting root $rootdev"
        # check external journal
==>     [ "$rootfstype" = "reiserfs" -a -n "$journaldev" ] && opt="${opt},jdev=$journaldev"
            mount $opt $rootdev /root || die 1


the first marked line changes $rootfstype which causes the 2nd test
for "$rootfstype" = "reiserfs" to fail, so the $opt for mount doesn't
pass the needed jdev=$journaldev mount option...
Comment 1 Hannes Reinecke 2006-02-09 07:37:44 UTC
You are correct. I've modified the first section to:

    # fsck is unhappy without it
    echo "$rootdev / $rootfstype defaults 1 1" > /etc/fstab
    fsckopts="-V -a"
    # Check external journal for reiserfs
    [ "$rootfstype" = "reiserfs" -a -n "$journaldev" ] && fsckopts="-j $journaldev $fsckopts"
    fsck -t $rootfstype $fsckopts $rootdev

This way we're not modifying $rootfstype anymore.
Fix checked in for RC1.