Reimplement mounting in a different way
Instead of always creating an origin node at the authority level and creating all path elements as directories, only create everything up to the origin when mounting. Everything beyond that is created on-demand when an application triggers readdir or lookup. Some ioslaves like tar don't support access at the root level (tar:/// doesn't exist), so for mounting those it has to traverse the URL upward until a valid origin is found. As mountUrl no longer creates all nodes to resolve the full URL, it returns a string in the callback now instead of a node. As there is no longer a concept of a protocol node, it was replaced with a plain DirNode instead. remoteUrl had to be fixed to deal with m_overrideUrl having a non-empty (or '/') path, it didn't add '/' before. The algorithm of localPathToRemoteUrl was changed to not need all path elements as nodes. It stops traversing once an origin was found. This means it behaves incorrectly/unexpectedly with nested origins. BU...
Showing with 240 additions and 187 deletions