Bug 1118865

Summary: Missing / mount point in yast2 bootloader after upgrade
Product: [openSUSE] openSUSE Distribution Reporter: Tuomas Hiukkanen <tuomas.hiukkanen>
Component: YaST2Assignee: YaST Team <yast-internal>
Status: RESOLVED FIXED QA Contact: Jiri Srain <jsrain>
Severity: Normal    
Priority: P5 - None CC: aschnell, jlopez, jreidinger, schubi, tuomas.hiukkanen
Version: Leap 15.0   
Target Milestone: ---   
Hardware: HP   
OS: All   
URL: https://trello.com/c/TBpLkeDj/2734-sle15-leop15-1118865-missing-mount-point-in-yast2-bootloader-after-upgrade
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Attachments: y2log
y2log from 2nd server

Description Tuomas Hiukkanen 2018-12-08 22:31:40 UTC
User-Agent:       Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36
Build Identifier: 

After upgrading to 15.0, i'm not able to run yast2 bootloader.
The error message presented is
Details: Missing '/' mount point
Caller: /usr/share/YaST2/modules/BootStorage.rb:240:in `detect_disks'
/ is ext3 on an old HP P400 (cciss) controller hardware and shown as
/dev/cciss/c0d0p1 / ext3 rw,noatime,data=ordered 0 0
in mtab. There is no separate /boot mount.
The system has been upgraded many times, propably all the way from 10.3/11.0.

Reproducible: Always

Steps to Reproduce:
1. Run yast2 bootloader

Actual Results:  
An error message is presented;

Internal error. Please report a bug report with logs.
Run save_y2logs to get complete logs.
Details: Missing '/' mount point
Caller: /usr/share/YaST2/modules/BootStorage.rb:240:in `detect_disks'

Expected Results:  
Yast2 bootloader options screen should be displayed.
Comment 1 Tuomas Hiukkanen 2018-12-08 22:34:02 UTC
Created attachment 792236 [details]
y2log
Comment 3 Stefan Schubert 2018-12-10 10:30:36 UTC
For me it smells like some packages incompatible:
2018-12-08 23:52:07 <3> new(4272) [libstorage] ../storage/Utils/Enum.h:76 converting 'proc' to enum failed
2018-12-08 23:52:07 <3> new(4272) [libstorage] ../storage/Utils/Enum.h:76 converting 'sysfs' to enum failed
2018-12-08 23:52:07 <3> new(4272) [libstorage] ../storage/Utils/Enum.h:76 converting 'debugfs' to enum failed
2018-12-08 23:52:07 <3> new(4272) [libstorage] ../storage/Utils/Enum.h:76 converting 'usbfs' to enum failed
2018-12-08 23:52:07 <3> new(4272) [libstorage] ../storage/Utils/Enum.h:76 converting 'devpts' to enum failed
Thomas, do you see your disk while calling
"yast2 storage"
with root permissions ?
Comment 4 Tuomas Hiukkanen 2018-12-10 10:36:23 UTC
(In reply to Stefan Schubert from comment #3)
> For me it smells like some packages incompatible:
> 2018-12-08 23:52:07 <3> new(4272) [libstorage] ../storage/Utils/Enum.h:76
> converting 'proc' to enum failed
> 2018-12-08 23:52:07 <3> new(4272) [libstorage] ../storage/Utils/Enum.h:76
> converting 'sysfs' to enum failed
> 2018-12-08 23:52:07 <3> new(4272) [libstorage] ../storage/Utils/Enum.h:76
> converting 'debugfs' to enum failed
> 2018-12-08 23:52:07 <3> new(4272) [libstorage] ../storage/Utils/Enum.h:76
> converting 'usbfs' to enum failed
> 2018-12-08 23:52:07 <3> new(4272) [libstorage] ../storage/Utils/Enum.h:76
> converting 'devpts' to enum failed
> Thomas, do you see your disk while calling
> "yast2 storage"
> with root permissions ?

No disks visible in any of the views (Hard Disks, RAID, Volume Management...).
On finish an error message blocks progression;
 The system cannot be installed because the following
 errors were found:
 *  There is no device mounted at '/'
Comment 5 Tuomas Hiukkanen 2018-12-25 12:30:05 UTC
Uh, now i'm getting the same error with another server upgraded to 15.
This one has a different disk controller, an LSI 9750-8i.

yast2 storage shows the disks on this one, but yast2 bootloader produces the same error. Both servers are running on ext3 partitions.
Comment 6 Tuomas Hiukkanen 2018-12-25 12:32:05 UTC
Created attachment 793344 [details]
y2log from 2nd server
Comment 7 Stefan Schubert 2018-12-27 16:18:10 UTC
(In reply to Tuomas Hiukkanen from comment #6)
> Created attachment 793344 [details]
> y2log from 2nd server

I believe the problem is here:
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /  ext3  rw,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/_default/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/andas/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/authentic/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/avioninteractive/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/clearwater/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/elers/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/elo/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/energiakumppanit/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/erweko/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/fundament/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/gogloob/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/helsinginan/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/hkr/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/janlonnberg/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/kasvutarinat/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/kcw/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/kennoidesign/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/lara/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/leipurin/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/lindorff/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/mape/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/meridiaani/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/mimo/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/noja/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/outi/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/paakallo/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/powerstick/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/rengaspartio/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/runeberg/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/sandberg/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/sanl/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/sapa/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/sekloyal/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/serverside/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/sevende/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/sharemarket/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/sinebrychoff/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/sinikarttunen/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/sparkhelsinki/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/sparre/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/terapiatuote/lib64  ext3  ro,relatime,data=ordered  0  0
2018-12-25 12:24:08 <1> mx2(10239) [libstorage] ProcMounts.cc:112 data[/dev/sda1] -> /dev/sda1  /data/www/customers/tomrundberg/lib64  ext3  ro,relatime,data=ordered  0  0

and the result is:
   - partition:
        size: 50 GiB
        start: 1 MiB
        name: "/dev/sda1"
        type: primary
        id: esp
        file_system: ext3
        label: Root
        mount_point: "/data/www/customers/tomrundberg/lib64"
        fstab_options:
        - acl
        - user_xattr

instead of "/". That's the reason why the bootloader does not find any root partition.
Comment 8 Stefan Hundhammer 2019-02-14 11:34:20 UTC
Looks like /dev/sda1 is mounted a lot of times. Looks like we don't happen to use the correct mount point here among all these.
Comment 9 Josef Reidinger 2019-02-20 12:50:30 UTC
workaround implemented. It now uses the shortest mount path if there are multiple ones.
Comment 10 José Iván López González 2019-04-12 14:10:43 UTC
Hi Tuomas,

Although this bug was already fixed, we are evaluating the possibility of really supporting more than one mount point per device. But first, we need to know whether there is a reasonable use-case for that. Could you please explain us why you need to mount /dev/sda1 over several locations? From logs of the second server, we can see that /dev/sda1 is mounted over:

/
/data/www/customers/_default/lib64
/data/www/customers/andas/lib64
/data/www/customers/authentic/lib64
/data/www/customers/avioninteractive/lib64
/data/www/customers/clearwater/lib64
...
/data/www/customers/terapiatuote/lib64
/data/www/customers/tomrundberg/lib64

Thanks in advance for your collaboration.
Comment 11 Tuomas Hiukkanen 2019-04-12 14:39:37 UTC
Hey José and thanks for your efforts.

Actually, i'm running customer-specific chroot jails with bind mounted stuff - /dev/urandom, /var/run/nscd, a stripped-down version of /lib64. I was actually surprised to see that the mount table did not reflect bind mounting or the source...

Actually, the first server (without bind mounts) still shows empty (no drives) in yast2 storage. The HW is legacy-ish (CCISS).
Comment 12 José Iván López González 2019-04-15 16:58:35 UTC
Thanks for the info. Now we have realized that we need to improve the way of probing mount points when there are bind-mounted directories.