#7502·juicefs

如果之前已解除与同一路径的文件链接,则通过 `rename` 将文件链接替换为另一个文件会导致 `输入/输出错误`

作者: Slava0135创建于 2026年9月3日更新于 2026年9月3日
标签kind/bug

** 发生了什么事**:

你好,我正在运行一些测试 不同的文件系统,包括果汁。 在使用FUSE(POSIX)接口和SQLite元数据存储时,似乎存在以下问题:

  1. 创建空文件 " file1 " 。
  2. link'处从file1'创建(硬)链接。
  3. 解开 " 链接 " 。
  4. 创建空文件 " file2 " 。
  5. link'再从file1'创建(硬)链接。
  6. file2'更名为link'。

上次操作失败,出现“输入/输出错误”。

Mount日志报告内部错误(文件位置来自`1.5.0-dev+2026-09-03.f2f31b6f'):

翻译: 2026/09/03 07:52:57.157083 果汁 [1495] :错误:UNIQUE 约束失败:jfs edge.parent,jfs edge.name. goroutine 368 [运行]: 运行时间/ 调试. Stack () /usr/lib/go-1.26/src/运行时间/调试/stack.go:26+0x5e GitHub.com/juicedata/juicefs/pkg/meta.errno ({0x50a4f00,0x3eb4c02bd770}). /root/juicefs-git/pkg/meta/utils.go:157+0x16e GitHub.com/juicedata/pkg/meta. (*dbMeta.). doRename(0x3eb4bf766ac0,{0x512b240,0x3eb4bf9a9040},0x1,{0x3eb4c01d8b14,0x5},0x1,{0x3eb4c01d8b1c,0x4},0x0,. /root/juicefs-git/pkg/meta/sql.go:2663+0x448 GitHub.com/juicedata/juicefs/pkg/meta. (*baseMeta.). Rename (0x3eb4bf369408,{0x512b240,0x3eb4bf9a9040},0x1,{0x3eb4c01d8b14,0x5},0x1,{0x3eb4c01d8b1c,0x4},0x0,. /root/juicefs-git/pkg/meta/base.go:1965+0x90d 页面存档备份,存于互联网档案馆. GitHub.com/juicedata/juicefs/pkg/vfs. (*VFS.). Rename(0x3eb4c02c1360,{0x512de60,0x3eb4b9a9040},0x1,{0x3eb4c01d8b14,0x5},0x1,{0x3eb4c01d8b1c,0x4},0x0) /root/juicefs-git/pkg/vfs/vfs.go:374+0x2fc GitHub.com/juicedata/juicefs/pkg/fuse. (*fileSystem). 重命名(0x3eb4c056c0a0,0x4a639d?,0x3eb4bf7c86c0,{0x3eb4c01d8b14,0x5},{0x3eb4c01d8b1c,0x4}). /root/juicefs-git/pkg/fuse/fuse.go:165+0xd1 GitHub.com/hanwen/go-fuse/v2/fuse.do Rename(0x3eb4c02f2f00,0x3eb4b71a488) 互联网档案馆的存檔,存档日期2014-12-2. /root/go/pkg/mod/GitHub.com/juicedata/go-fuse/[email protected]/fuse/opcode.go:487+0xf4 GitHub.com/hanwen/go-fuse/v2/fuse.init.func1(0x1a000068?,0x2?). /root/go/pkg/mod/GitHub.com/juicedata/go-fuse/[email protected]/fuse/opcode.go:810+0x43 GitHub.com/hanwen/go-fuse/v2/fuse. (*Server. handle request (0x3eb4c02f2f00,0x3eb4b71a488)). /root/go/pkg/mod/GitHub.com/juicedata/go-fuse/[email protected]/fuse/server.go:821+0x2f1 : GitHub.com/hanwen/go-fuse/v2/fuse. (*Server.loop (0x3eb4c02f2f00,0x1). /root/go/pkg/mod/GitHub.com/juicedata/go-fuse/[email protected]/fuse/server.go:794+0x110 GitHub.com/hanwen/go-fuse/v2/fuse. (*Server)所创建. 在goroutine 1中读取请求 /root/go/pkg/mod/GitHub.com/juicedata/go-fuse/[email protected]/fuse/server.go:451+0x668 [[email protected]:157] (中文(简体) ).


** 你预期会发生什么**:

上次操作预计将成功完成 。

** 如何复制(尽可能少和准确)**:

页:1
#包括 <errno.h>
# 包括 < fcntl.h>
#包括"stdio.h"
包含
. . . . . . .

内容来源: juicedata/juicefs