[arv-mount] --unmount should work on an unresponsive mount
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/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?)