De acordo com a documentação mount.cifs(8)
, passando a opção serverino
deve habilitar os números de inodes do lado do servidor, mas somente se você tiver "CIFS UNIX Extensions" disponíveis no servidor (veja a seção "INDE NUMBERS"):
When Unix Extensions are enabled, we use the actual inode number provided by the server in response to the POSIX calls as an inode number.
When Unix Extensions are disabled and "
serverino
" mount option is enabled there is no way to get the server inode number. The client typically maps the server-assigned "UniqueID
" onto an inode number.Note that the UniqueID is a different value from the server inode number. The UniqueID value is unique over the scope of the entire server and is often greater than 2 power 32. This value often makes programs that are not compiled with LFS (Large File Support), to trigger a glibc EOVERFLOW error as this won't fit in the target structure field. It is strongly recommended to compile your programs with LFS support (i.e. with
-D_FILE_OFFSET_BITS=64
) to prevent this problem. You can also use "noserverino" mount option to generate inode numbers smaller than 2 power 32 on the client. But you may not be able to detect hardlinks properly.
Não está diretamente indicado na documentação , mas você provavelmente precisará do "CIFS POSIX Extensions" ( CONFIG_CIFS_POSIX
kernel option) para ser ativado no kernel.
Como o Windows Server 2012 não tem essas extensões, convém habilite o recurso NFS Server ao invés de e use isso.
BTW, cifs
não é o único sistema de arquivos onde este é o caso: os sistemas de arquivos /sys
, /dev
e /proc
podem exibir esse comportamento também.