O que acontece se houver mais de um programa FUSE atuando em um diretório?

0

É claro que o sistema evitaria a montagem de duas coisas em um diretório.

Mas, e se você montar um programa FUSE no diretório superior e outro programa FUSE em um subdiretório?

O que exatamente acontece quando você chama operações no subdiretório?

Minha suposição é que ele inicialmente passa por operações relacionadas à montagem a partir do topo do FUSE e, em seguida, vai para as operações reais que você chamou no sub FUSE.

Isso está correto?

EDIT: Acontece que eu estava errado sobre não ser capaz de montar duas coisas em um diretório. Então qual programa FUSE tem prioridade quando dois programas FUSE diferentes são montados no mesmo diretório?

    
por CuriousKimchi 28.12.2016 / 03:21

2 respostas

2

Qualquer sistema de arquivos pode ser montado em qualquer local. Todos os acessos aos arquivos dentro desse ponto de montagem são vistos apenas pelo sistema de arquivos montado nesse local, e não pelos sistemas de arquivos adjacentes. Isso não é diferente de qualquer outra montagem que você faz, necessariamente dentro do sistema de arquivos raiz.

Tanto quanto o sistema de arquivos externo sabe, esse ponto de montagem é apenas um diretório. Ele não saberia o que fazer com solicitações de arquivos que não estão dentro desse diretório a partir de sua perspectiva, portanto, sua suposição não está correta. Não há diferença entre o FUSE e outros sistemas de arquivos neste aspecto.

Chegar ao ponto de montagem a partir da raiz em primeiro lugar irá requerer a travessia dos sistemas de arquivos externos. Esse é o único ponto em que eles são acessados e eles não sabem o que é o restante do caminho.

    
por 28.12.2016 / 04:08
2

Of course the system would preventing mounting two things on one directory.

Não. Você pode montar no mesmo diretório quantas vezes desejar:

mkdir /tmp/foo /tmp/bar /tmp/baz
mount --bind /tmp/foo /tmp/baz
mount --bind /tmp/bar /tmp/baz # <-- no error

But, what if you mount a FUSE program in the top directory and another FUSE program in a sub directory?

A mesma coisa que aconteceria se as montagens não fossem controladas pelos programas FUSE. A parte da árvore de diretórios superior que está "sob" a nova montagem não está mais acessível (exceto por meio de identificadores de arquivos abertos anteriormente).

My assumption is that it initially goes through operations related to mounting from the top FUSE, and then goes to the actual operations you called in the sub FUSE.

Mais ou menos. O kernel do Linux tem um cache "dentry", portanto, se os diretórios já estiverem no cache do kernel, o programa "top" do FUSE não necessariamente obterá quaisquer eventos da operação de montagem ou de operações que ocorrem no sub FUSE.

    
por 28.12.2016 / 04:13

Tags