Up Next
Go up to Operações sobre Ficheiros
Go forward to Cache de Acesso a Directórios

Travessia do nome

lookupn() recebe um nome e retorna um ptr para vnode:

  1. Verifica se o nó-v inicial é directório (se não for final).
  2. Se componente é ".." e cwd raíz, apanhe o componente seguinte.
  3. se componente é ".." e cwd VROOT, acesse mountpoint.
  4. se componente não fôr encontrado e fôr último, retorne sucesso, passando ptr para o pai e mantendo hold. Senão ENOENT.
  5. se componente novo é um ponto de montagem encontre o vfs correspondente e chame vfs_root para encontrar o vnode raíz.
  6. Se v_type == VLNK, traduza com (VOP_SYMLINK), junte a tradução e reinicialize (se caminho absoluto, comece da raíz).

    lookupn() pode desactivar avaliação de links simbólicos. Existe tb limite máximo para evitar ciclos.

  7. Liberta directório (segurado ou por VOP_LOOKUP ou por inicialização.
  8. Se encontrou, mantenha o hold e regresse um ptr para o vnode. Se caminho esgotado e não encontrou termine. Senão volte ao ciclo.

vitor@cos.ufrj.br

Up Next