最近在运行脚本文件时,出现Value too large for defined data type的报错。困扰了好几天,网上有一部分解决方法是在挂载时在 -o 后添加上nounix,noserverino这两个参数,例如:
mount -o username=XXX,nounix,noserverino //d.d.d.d/XXX XXX
其中:
nounix主要是禁用CIFS UNix的扩展,从而关闭很多设置来解决部分会因为扩展导致的问题。
noserverino主要是禁止使用来自服务器端的编号而使得客户端生成inode编号。
但之前在进行mount时就已经添加上这两个参数了,且利用这种方法的例子和我的错误虽然都报错Value too large for defined data type,错误行开头出现的信息是不同的。
进一步测试且结合一些解释,推测错误原因应该和inode有关,且参数nounix解决的也是一种因inode差异产生的问题。通过ls -i查看目标文件夹的inode号,发现inode号大于4,294,967,296(2的32次方),为64位下的inode号。而编译生成的工具可能只能识别32位的inode号,也就是inode号小于4,294,967,296的位置。据说可以通过挂载时的命令可以限制inode挂载后生成inode的位数,但是包括查看mount(8)手册也没有找到。
最后通过重新创建目标位置文件夹使其inode在32位的表示范围内解决问题。