golang samba cifs 文件系统 中断panic unlink interrupted system call

在使用Golang处理Samba CIFS文件系统时遇到了'interrupted system call'错误,这与Linux系统调用EINTR问题有关。设置环境变量GODEBUG=asyncpreemptoff=1可以缓解该问题。Go官方和社区针对此问题进行了讨论和部分修复,如Go 1.16引入的补丁。此外,一些开源项目如gocryptfs和rclone也遇到类似问题并提供了临时解决方案。
摘要由CSDN通过智能技术生成

程序日志:

Jan 27 19:23:58  cspost[28369]: panic: update ScandSource file.DeleteDir: unlinkat /opt/scandata/392066599894386302: interru
pted system call

系统日志 /var/log/message

Jan 27 14:48:39 10- kernel: CIFS VFS: \\\scandata Close interrupted close
Jan 27 20:27:01 10- kernel: CIFS VFS: Send error in read = -4
Jan 27 20:30:36 10- kernel: CIFS VFS: \\\scandata Close interrupted close
Jan 27 20:49:00 10- kernel: CIFS VFS: \\\scandata Close interrupted close
Jan 27 20:55:21 10- kernel: CIFS VFS: Send error in read = -4

可以设置环境变量缓解:

比如在systemd 的 service块内配置:

Environment=GODEBUG=asyncpreemptoff=1 

本质是 unix linux syscall  系统调用 kernel的 EINTR error问题。是一个常见问题。

在golang 和cifs samba挂载网络存储时调用场景下触发的。

go官方代码解决:

https://github.com/golang/go/commit/e6

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值