Se mount(2)
necessário, a criação de um novo diretório para ser o ponto de montagem, você não poderá montar nada em um sistema de arquivos somente leitura. Isso seria idiota, para que possamos descartar isso.
Se mount opcionalmente criou um novo diretório para ser o ponto de montagem, isso seria estranho. Não é como montar / desmontar acontecer o tempo todo, portanto, colocar lógica extra no kernel para executar essas duas etapas com uma única chamada do sistema não seria uma aceleração importante. Apenas deixe espaço para o usuário fazer uma mkdir(2)
chamada do sistema, se desejar. A resposta de Dmitry aponta que mount(2)
fazer as duas coisas a tornaria não atômica. E você iria querer um argumento extra para mount(2)
com bandeiras do modo como open(2)
toma, para O_CREAT
, O_EXCL
, etc. Seria apenas ser bobo em comparação a deixar o espaço do usuário fazê-lo.
Ou talvez você estivesse perguntando sobre ter mount(8)
(o programa tradicional que faz mount(2)
chamadas do sistema) fazer isso? Isso seria possível, mas já existe algo perfeitamente bom mkdir(1)
para o trabalho, e o design do Unix é sobre boas ferramentas pequenas que podem ser combinadas. Se você deseja uma ferramenta que faça as duas coisas, é fácil escrever um script de shell para criar essa ferramenta com duas ferramentas mais simples. (Ou, como muru comentou, udisksctl
já faz isso, para que você não precise escrevê-lo.) Além disso, o normal do Linux a mount(8)
partir do util-linux suporta o mount -o x-mount.mkdir[=mode]
uso de sua x-
sintaxe para opções de espaço do usuário, em vez de opções a serem passadas para o sistema de arquivos.
Agora, a pergunta mais interessante: por que deve haver um diretório no sistema de arquivos pai?
Como a resposta de pjc50 aponta (sem relação, mesmo que ele tenha minhas iniciais!), Ter pontos de montagem exibidos nas listagens de diretório exigiria uma verificação extra em todos os itens readdir()
.
Ter pontos de montagem como diretórios no diretório que os contém (no FS pai) é um bom truque. readdir()
não precisa perceber que é um ponto de montagem. Isso só acontece se o ponto de montagem for usado como um componente do caminho. É claro que a resolução do caminho precisa verificar a tabela de montagem para todos os componentes de diretório de um caminho.
udisksctl
. Por que usarmount
?