Skip to content
  • Fabian Vogt's avatar
    Reimplement mounting in a different way · 1fedbb19
    Fabian Vogt authored
    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.
    
    BUG: 422091
    CCBUG: 422090
    1fedbb19