Nome do arquivo muito longo mount_nfs

1

Eu tenho uma caixa Vagrant do FreeBSD que se parece com isso:

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.box = "chef/freebsd-10.0"

  config.vm.network "private_network", ip: "10.0.1.10"
  config.vm.synced_folder '.', '/vagrant', :nfs => true, id: "vagrant-root"

end

No entanto, se ele tentar executar em um caminho de diretório com um nome muito longo, ele falhará:

==> default: Mounting NFS shared folders...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

mount -t nfs '10.0.1.1:/Users/petersouter/projects/reallylongpathnameover88characterssothatmountfswillfail12345678910111213141516' '/vagrant'

Stdout from the command:



Stderr from the command:

mount_nfs: 10.0.1.1:/Users/petersouter/projects/reallylongpathnameover88characterssothatmountfswillfail12345678910111213141516: File name too long

Existe uma maneira de resolver isso além de copiar o diretório para um com um nome mais curto? Posso atualizar coisas do FreeBSD para aceitar nomes de arquivos maiores?

    
por Peter Souter 19.01.2015 / 11:49

1 resposta

3

O FreeBSD limita o comprimento dos nomes dos pontos de montagem a 88 caracteres. As razões para isso são um pouco esotéricas, mas tem a ver com o alinhamento de uma estrutura de memória nos limites da página [1].

Você pode corrigir o binário de montagem para usar um limite maior ou removê-lo todos juntos [2], mas isso pode causar falhas. Eu removi o cheque com sucesso (também para o vagrant com o nfs) e tive que funcionar sem problemas, mas o faço por sua conta e risco. Eu não fiz um buildworld completo, mas reconstruí apenas o binário mount_nfs com o patch do segundo link.

Como nota final, eu finalmente decidi que o vagrant com o nfs é muito bugs e mudei para o uso de pastas compartilhadas rsync.

[1] link

[2] link

    
por 22.01.2015 / 23:26