summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2014-07-24 20:24:42 +0100
committerRoss Lagerwall <rosslagerwall@gmail.com>2014-07-25 07:45:45 +0100
commit2744d498095aeca09308819bca42d0fe287523d0 (patch)
tree3f222d604f0e76c7339982d5a725741f86948879 /configure.ac
parent64e51eb07cd6628991842c6be8eb276802b71154 (diff)
downloadgvfs-2744d498095aeca09308819bca42d0fe287523d0.tar.gz
GDaemonMount: invalidate mount cache whenever we unmount a mount
Otherwise, the old mount info, and in particular the (D-Bus unique name, object path) pair representing it in its backend, will remain in the cache until the backend process exits, which could take time. Re-mounting and re-unmounting that mount would fail, because the second Unmount() call would go to the unique name and object path of the backend object that was destroyed by the first Unmount call, not the backend object that is now responsible. I'm using the Unmount reply rather than a signal, for thread-safety; the mount cache is global, so if it was listening for the Unmounted signal, that signal would be queued up for delivery to some specific main-context, call it A. If another thread did the umount/mount/unmount in main context B, before main context A was dispatched, then the invalidation would be too late to help it. This does not cover concurrent mount/unmount in two distinct main contexts without any synchronization. However, if two threads in main contexts B and C race to mount/unmount a share, then they're sometimes going to lose anyway, and there isn't a great deal that cache invalidation can do to help them.
Diffstat (limited to 'configure.ac')
0 files changed, 0 insertions, 0 deletions