Links físicos para diretórios não são fundamentalmente diferentes de links para arquivos. De fato, muitos sistemas de arquivos possuem hard links em diretórios, mas apenas de uma maneira muito disciplinada.
Em um sistema de arquivos que não permite que os usuários criem links físicos para diretórios, os links de um diretório são exatamente
- a entrada
.
no próprio diretório; - as entradas
..
em todos os diretórios que têm esse diretório como pai; - uma entrada no diretório para o qual
..
aponta.
Uma restrição adicional em tais sistemas de arquivos é que, de qualquer diretório, seguir ..
nós deve levar à raiz. Isso garante que o sistema de arquivos seja apresentado como uma única árvore. Essa restrição é violada em sistemas de arquivos que permitem links rígidos para diretórios.
Sistemas de arquivos que permitem links para diretórios permitem mais casos do que os três acima. No entanto, eles mantêm a restrição de que esses casos existem: o .
de um diretório sempre existe e aponta para si mesmo; o ..
de um diretório sempre aponta para um diretório que o contém como uma entrada. Desvincular uma entrada de diretório que é um diretório só a remove se ela não contiver nenhuma entrada diferente de .
e ..
.
Assim, um ..
pendente não pode acontecer. O que pode dar errado é que uma parte do sistema de arquivos pode ser desanexada. Se o ..
de um diretório aponta para um de seus descendentes, então ../../../..
forma um loop. (Como visto acima, sistemas de arquivos que não permitem manipulações de link físico impedem isso.) Se todos os caminhos da raiz para tal diretório não estiverem ligados, a parte do sistema de arquivos que contém este diretório não pode mais ser alcançada, a menos que existam processos que ainda tem seu diretório atual nele. Essa parte não pode ser excluída, já que não há como chegar até ela.
GCFS permite links diretos de diretório e executa um coletor de lixo para excluir essas partes desanexadas do sistema de arquivos. Você deve ler sua especificação, que aborda suas preocupações em detalhes. Esse é um exercício intelectual interessante, mas não conheço nenhum sistema de arquivos usado na prática que forneça coleta de lixo.