代码之家  ›  专栏  ›  技术社区  ›  Mykola Kharechko

保险丝故障

  •  2
  • Mykola Kharechko  · 技术社区  · 14 年前

    我正在python上开发fusefs(带有fusepython绑定)。我需要什么方法来实现它 触摸 正确工作?目前我有下一个输出:

    
    $ touch m/My\ files/d3elete1.me 
    touch: setting times of `m/My files/d3elete1.me': Invalid argument
    
    

    文件存在“d3elete1.me”:

    
    $ ls -l m/My\ files/d3elete1.me 
    -rw-rw-rw- 1 root root 0 Jul 28 15:28 m/My files/d3elete1.me
    

    我还试图追踪系统调用:

    
    $ strace touch m/My\ files/d3elete1.me
    ...
    open("m/My files/d3elete1.me", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK|O_LARGEFILE, 0666) = 3
    dup2(3, 0)                              = 0
    close(3)                                = 0
    utimensat(0, NULL, NULL, 0)             = -1 EINVAL (Invalid argument)
    close(0)                                = 0
    ...
    
    

    如你所见 乌蒂门萨特 失败。我试着实现空的 乌提门斯 但它的名字都不叫。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Markus Peröbner    14 年前

        2
  •  1
  •   Matt Joiner    14 年前

    你必须实施 utimens getattr

    我相信在你的情况下,导火索是在它的解释之前 utimesat 乌提门斯 获取属性

    utimensat . 这是 这个案子。在ubuntu10.04上使用fuse-python时,我得到了与您提供的完全相同的回溯。我翻了一下,看起来fusepython0.2绑定是针对fuse2.6的,这可能是一个细微的变化引入了这个错误(fuse现在是版本2.8)。我的解决方案是停止使用fuse-python(代码乱七八糟),我找到了另一个绑定 fusepy

    我强烈建议您看一看,您的初始化代码将更干净,并且需要最小的更改来适应新的绑定。最棒的是,它只有一个模块,而且容易阅读。