Problema de truncagem de arquivo estranho no mount CIFS

2

Com referência a: link

Temos um dispositivo Seagate BlackArmor NAS, que é montado em nosso servidor Ubuntu 10.04 da seguinte forma:

mount -t cifs -o defaults,credentials=/etc/smbpass/demo.smbpass,uid=1005,gid=1005,dir_mode=0770,file_mod=0660 //xxx.xxx.xxx.xxx/demo/files /var/www/mysite/src/files/

Parece que qualquer operação que deve truncar arquivos e inserir conteúdo nesses arquivos no NAS acaba substituindo apenas os primeiros bytes do arquivo (até o comprimento do novo conteúdo) e, em seguida, o restante do conteúdo "antigo" anterior ainda está no arquivo.

Por exemplo:

Conteúdo do myfile.txt: thisisabigfatpandaonwheelsgoingdownthestreet

Execute o script PHP com o código: file_put_contents('myfile.txt', 'blah');

Conteúdo do myfile.txt: blahisabigfatpandaonwheelsgoingdownthestreet

O conteúdo esperado do arquivo é obviamente blah , mas esse não é o caso.

Usar fwrite() do PHP depois de criar um identificador de arquivo com fopen('filename', 'w'); tem o mesmo efeito. ftruncate() também não funciona corretamente. Usar um comando shell como echo -n "blah" > myfile.txt tem o mesmo efeito (é assim que eu sei que não é um problema específico do PHP).

Meu único trabalho atualmente é excluir os arquivos e criá-los do zero, mas prefiro não alterar nenhum código em meu aplicativo, se possível (só começamos a usar o dispositivo NAS recentemente). Eu prefiro aplicar uma solução para o que parece ser um problema relacionado ao mount / relacionado ao sistema operacional.

Alguma idéia?

    
por Johan 31.08.2012 / 12:04

1 resposta

1

Eu tive exatamente os mesmos sintomas em uma configuração do meu próprio samba (Debian 6 x64 com samba 3.5.6). Eu finalmente reduzi-a à seguinte opção, causando exatamente o mesmo comportamento:

large readwrite = no

Quando definido como yes (ou removido, como sim é a configuração padrão), os problemas desapareceram.

Arquivado relatórios de erros contra o Debain e o Samba upstream: link
link

    
por 29.01.2013 / 15:32