FreeBSD 10.0的strnvis大坑

先吐槽自己,这么多年了,这里都成了遗弃之地了。上次写博客还是未婚小青年,这个时候已经是娃她爸好几个月了。
最近遇到个大坑,记录下。
自用一台小服务器HP N40L,用了FreeBSD+ZFS做文件服务器,当然还有跑了几个重要的服务:unbound+dnssec,为什么,你懂得。还有obfuscated ssh+privoxy,同理。以前一直用的是FreeBSD 9.1-release,很好,但是,这个服务器的启动盘,我用了一块老的不行的靠重新量产救回来过一次的KingMax超棒作为启动盘和根文件系统,也一直没有问题。但是,前面某天为了某些原因,拉了次闸,然后我在用的时候,发现挂载的好好的NFS不见了。于是,看了下启动信息,是挂载根文件系统失败。
最近因为某些原因,把自己的家用服务器从FreeBSD 9.1升级到了10.0,然后,然后就踩到了大坑。原来跑的好好的obfuscate-ssh重新编译什么的都正常,但是一跑就core dump。直接gdb看了下,直指一个库函数调用strnvis,这个函数,然后,仔细看了看代码,我去……雷翻的节奏啊,这也行啊?

阅读更多

write(2)在磁盘满的时候的行为

今天一个同事问我关于write(2)在写入文件的时候问题,问题是这样的:

当磁盘剩余空间不能将一次write调用希望写入的数据写完的时候,write是直接返回-1,然后设置errno为ENOSPC,还是先写入一部分数据,将剩余空间占满然后再下一次调用的时候返回错误?

当时发现好像没有考虑过这样的问题,Google了一下,好像没有找到关于这个细节的说明。

阅读更多