Bug 406242

Summary: fstab-mounted NFS drive gets two entries in Places panel
Product: [Frameworks and Libraries] frameworks-solid Reporter: Méven Car <meven29>
Component: generalAssignee: Lukáš Tinkl <lukas>
Status: RESOLVED FIXED    
Severity: normal CC: kdelibs-bugs, nate, stefan.bruens
Priority: NOR    
Version: 5.56.0   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In: 5.66
Sentry Crash Report:
Attachments: Screenshot of issue

Description Méven Car 2019-04-05 07:22:33 UTC
Created attachment 119255 [details]
Screenshot of issue

SUMMARY
When mounting a nfs drive in dolphin (not using autofs) configured in fstab.
Once the nfs drive is mounted, you end up with two icons for the mount.
One that is working as expected, has a green icon, that you can use to umount the drive. When unmount, the green icon disappears and the orange icon becomes usable again.
The other has an orange icon, clicking on it result in dolphin popup error containing "mount.nfs: /media/NFS is busy or already mounted". You cannot unmount this drive with this icon.

I can reproduce it with dolphin/kio from sources.

This was reported in Bug https://bugs.kde.org/show_bug.cgi?id=390691:
"The first strange thing that happens is that the icon I have clicked on stays as disconnected (red icon) and a new entry appears at the bottom of the pane with the green "connected" icon."

STEPS TO REPRODUCE
1. Click on a umounted nfs drive in dolphin place

OBSERVED RESULT
A new icon appears and dolphin browses to this mount.
The orange icon stays visible, unusable, confusing.


EXPECTED RESULT
A new icon appears and dolphin browses to this mount.
No orange icon once the drive is mounted.


ADDITIONAL INFORMATION

Operating System: Kubuntu 18.10
KDE Plasma Version: 5.15.3
KDE Frameworks Version: 5.54.0
KDE Applications Version: 18.04.3
Qt Version: 5.11.1
Kernel Version: 4.18.0-17-generic
OS Type: 64-bit
Comment 1 Méven Car 2019-04-06 12:07:38 UTC
Before mounting:

$ solid-hardware list
[...]
udi = '/org/kde/fstab/192.168.1.16:/home/meven/'

Mount:

$ solid-hardware mount '/org/kde/fstab/192.168.1.16:/home/meven/'

List again:

$ solid-hardware list
[...]
udi = '/org/kde/fstab/192.168.1.16:/home/meven/'
udi = '/org/kde/fstab/192.168.1.16:/home/meven'

It might illustrate the bug : the mounted device has a different udi with no '/' at the end preventing solid to deduplicate them.
Comment 2 Nate Graham 2019-04-06 17:44:53 UTC
Looks like it. Wanna submit a patch? :)
Comment 3 Méven Car 2019-04-07 09:55:36 UTC
Already on it : https://phabricator.kde.org/D20301
Comment 4 Stefan Brüns 2019-04-26 17:07:47 UTC
@meven: can you provide the relevant lines from both /proc/mounts and /etc/fstab?
Comment 5 Bug Janitor Service 2019-05-11 04:33:09 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least
15 days. Please provide the requested information as soon as
possible and set the bug status as REPORTED. Due to regular bug
tracker maintenance, if the bug is still in NEEDSINFO status with
no change in 30 days the bug will be closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please
mark the bug as REPORTED so that the KDE team knows that the bug is
ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!
Comment 6 Méven Car 2019-05-11 08:35:25 UTC
$ cat /etc/fstab
192.168.1.16:/home/meven/ /media/NFS nfs defaults,user,auto,noatime,bg 0 0

$ cat /proc/mounts
192.168.1.16:/home/meven /media/NFS nfs4 rw,nosuid,nodev,noexec,noatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.17,local_lock=none,addr=192.168.1.16 0 0

And to reiterate :
$ solid-hardware list
[...]
udi = '/org/kde/fstab/192.168.1.16:/home/meven/'
udi = '/org/kde/fstab/192.168.1.16:/home/meven'

Based on reading the code I deduced that Solid::Backends::Fstab::FstabHandling::_k_updateMtabMountPointsCache does not match the device because they end up with different udi.

Reviewing my settings I noticed that my remote export folder ends with a slash. And indeed once I removed the slash in my config the issue does not occur anymore.
So my previous patch seems irrelevant and what we need would be to strip last slashes out of path read from /etc/fstab.
Does it make sense ?
Comment 7 Méven Car 2019-05-25 13:43:01 UTC
It seems to be due to specific configuration:

In /etc/fstab
Replacing:
192.168.1.16:/home/meven/ /media/NFS nfs defaults,user,auto,noatime,bg 0 0
With
192.168.1.16:/home/meven /media/NFS nfs defaults,user,auto,noatime,bg 0 0

For instance resolves the issue.
Comment 8 Méven Car 2019-12-15 07:27:54 UTC
Git commit c97f0b2a3076731b35435f200bd09a22859f3e03 by Méven Car.
Committed on 15/12/2019 at 07:27.
Pushed by meven into branch 'master'.

Ensure mounted nfs filesystems matches their fstab declared counterpart

Summary:
When a nfs fs is declared in /etc/fstab and the filesystem path ends with a / (like 192.168.1.16:/home/meven/ ), once mounted the detected filesystem path does not have the slash.
This causes the mounted drive not to match the umounted filesystem, causing the later bug.

I.e :

$ solid-hardware list
[...]
udi = '/org/kde/fstab/192.168.1.16:/home/meven/'  (fstab declared mount)
udi = '/org/kde/fstab/192.168.1.16:/home/meven'    (mounted drive as returned by getmntent)

The patch makes the logic in Solid::Backends::Fstab::FstabHandling::deviceList matching mounted and unmounted filesytems unsensitive to their path ending with /
Related: bug 390691
FIXED-IN: 5.66

Test Plan:
Locally tested with Linux with a nfs drive set up with a path ending with a slash like
192.168.1.16:/home/meven/ /media/NFS nfs defaults,user,auto,noatime,bg 0 0

After patch
$ solid-hardware list
[...]
udi = '/org/kde/fstab/192.168.1.16:/home/meven'    (mounted drive as returned by getmntent)

Only one icon appears for the drive in places panel in Dolphin.

Not tested with getmntinfo / BSD code path, but the patch does not alter the code behavior much and don't foresee any risk there.

Reviewers: bruns, #frameworks, ngraham

Reviewed By: bruns, ngraham

Subscribers: broulik, dhaumann, anthonyfieroni, ngraham, bruns, apol, kde-frameworks-devel

Tags: #frameworks

Differential Revision: https://phabricator.kde.org/D21204

M  +26   -3    src/solid/devices/backends/fstab/fstabhandling.cpp

https://commits.kde.org/solid/c97f0b2a3076731b35435f200bd09a22859f3e03