一次寻根之旅

问题描述:自己做了一个文件系统,在一定情况下文件读取会报错,尝试了很多错误值,但是windows总报权限错误
1.确定文件系统返回值:利用strace查看调用过程
首先通过smbstatus查找到链接samba的进程号


查看samba状态.png
ps&strace.png

通过strace的输出可以看到文件系统的返回值为EBUSY


process.png

2.windows samba收到的错误码:利用Wireshark跟踪到windows侧收到的错误码为NT_STATUS_ACCESS_DENIED


Wireshark.png

3.samba 源码调查:通过上面两步确定到linux文件系统的返回值跟windows侧收到的错误码不一样。然后在samba的源码中查找了一下,发现有一个错误码的对照表Errmap_unix.c。

总结:linux fs的错误码与windows收到的错误码部分对照表

Linux fs windows
EAGAIN NT_STATUS_NETWORK_BUSY
EINTR NT_STATUS_RETRY
EPERM NT_STATUS_ACCESS_DENIED
EIO NT_STATUS_IO_DEVICE_ERROR
EEXIST NT_STATUS_OBJECT_NAME_COLLISION
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容