Não tenho reputação para fazer um comentário, por isso devo responder à sua pergunta mesmo que não consiga entender completamente o que você quer dizer com
the updated inode id
OK, para pegar o caminho do diretório raiz para um diretório onde você está, vamos na direção inversa. Você precisa primeiro obter o número de inode do diretório em que você está (você obtém a partir da entrada .
), depois acessar o diretório pai através da entrada ..
e pesquisar no diretório pai procurando um diretório que tem o mesmo número de inode que você tem no começo. Esse é o nome dessa entrada de diretório no diretório pai. Dessa forma, você obterá como esse diretório .
é chamado no diretório pai ... repetindo essa iteração, você obterá o nome do diretório granparent ... e assim por diante, até .... o que?
Ok, o diretório raiz tem uma entrada ..
que aponta para si mesma (como .
) e você tem que comparar o número do inode que você obteve da última vez com o que obteve nesta iteração e parar se eles são o mesmo número inode. Uma vez que este diretório especial tenha sido alcançado, você tem uma lista de nomes que você deve inverter, colocar barras / entre eles e você terá o caminho para o diretório atual.
Se você não está no sistema de arquivos raiz, o kernel faz a mágica que você precisa para obter o diretório pai (ele segue a entrada ..
pelos pontos de montagem, ignorando que a entrada ..
aponta para si) e você ll obterá o caminho para o diretório raiz corretamente, então você pode seguir este methot até você obter .
e ..
apontando para o mesmo inode.
Espero que isso responda totalmente a você.