Por que o link entre .. e o diretório pai é hardlink?

1

Acabei de notar que o link entre .. e o diretório pai é hardlink, eles têm o mesmo número de inode:

starpinker@host /home/starpinker/unix $ ls -ail
8200794 drwxrwxr-x 2 starpinker starpinker 4096 Aug 23 11:22 .
1409238 drwxrwxr-x 2 starpinker starpinker 4096 Aug 23 11:22 ..

em que o número de inode de /home/starpinker/unix é 8200794 e o número de inode de /home/starpinker é exatamente 1409238 .

Eu tenho uma pergunta sobre isso:

O hardlink não pode ser criado em diferentes sistemas de arquivos. Então, e se o diretório pai e o diretório filho estiverem em sistemas de arquivos diferentes? Por exemplo, no meu caso, se o /home/starpinker e /home/starpinker/unix estiverem em um sistema de arquivos diferente, o unix é apenas um ponto de montagem, então o link entre /home/starpinker/unix/.. e /home/starpinker ainda será hardlink?

    
por StarPinkER 31.08.2013 / 12:20

1 resposta

2

Por que é um link físico? Porque aponta para o diretório pai. O que mais poderia ser, se não um link?

Para o diretório raiz do sistema de arquivos, .. é ainda um link físico - mas ele aponta para o próprio diretório, ou seja, é equivalente a . . A camada VFS do kernel (que gerencia pontos de montagem e sistemas de arquivos) lida com esse caso especial e resolve magicamente /home/starpinker/unix/.. to /home/starpinker sem realmente olhar para o sistema de arquivos.

(Além disso, eu não pesquisei isso, mas eu acho que alguns sistemas de arquivos realmente não mantêm os links . e .. no disco, mas apresentam emulados em vez disso. Não me surpreenderia se o VFS camada realmente fez isso para todos os links .. , não apenas o caso especial ...)

    
por 31.08.2013 / 18:23