Project

General

Profile

Actions

Bug #12306

closed

[arv-mount] --unmount should work on an unresponsive mount

Added by Tom Clegg over 6 years ago. Updated over 6 years ago.

Status:
Resolved
Priority:
Normal
Assigned To:
Category:
-
Target version:
Story points:
-

Description

Currently, if an arv-mount process is in some deadlocked/stuck state, running arv-mount --unmount PATH just hangs instead of unmounting.

When this happens, echo 1 > /sys/fs/fuse/connections/NNN/abort revives the stuck unmount command.

It looks like arv-mount --unmount attempts to lstat() all mount points in /proc/self/mounts and lstat(stuck_mount_path) hangs.

This seems to be the fault of realpath() in source:services/fuse/arvados_fuse/unmount.py:

    while True:
        mounted = False
        for m in mountinfo():
            if m.is_fuse and (mnttype is None or mnttype == m.mnttype):
                try:
                    if os.path.realpath(m.path) == path:

On the shell node where this happened, where /home and /home/foo are both symlinks, arv-mount /home/foo/keep results in /data-sdd/foo/keep appearing in /proc/self/mountinfo, which means realpath() is superfluous here. (Is that true on all systems?)


Subtasks 1 (0 open1 closed)

Task #12564: Review 12306-dont-stat-mountsResolvedPeter Amstutz09/22/2017Actions

Related issues

Related to Arvados - Bug #11994: [arv-mount] Do not crash if /sys/fs/fuse/connections is emptyResolvedTom Clegg07/19/2017Actions
Related to Arvados - Bug #12538: crunch-run failing to terminate after completeResolvedPeter Amstutz11/06/2017Actions
Actions

Also available in: Atom PDF