【问题标题】:FUSE Extended AttributesFUSE 扩展属性
【发布时间】:2013-04-28 21:54:31
【问题描述】:

我正在尝试实现一个 FUSE 文件系统,包括设置/获取扩展文件属性的能力。在这种情况下,我感兴趣的属性是创建一个布尔条件以将文件标记为加密。假设我有一个名为 test.txt 的文件。在终端窗口中,我可以轻松地执行以下操作:

setfattr -n user.encrypted -v 1 test.txt

getfattr -n user.encrypted test.txt

并获得输出:

# 文件:test.txt

user.encrypted="1"

所以,我知道我的系统已正确设置为使用扩展属性。

但我一直坚持在 FUSE 中以编程方式设置和获取这些属性。例如,我有以下功能:

/* File open operation */
int bb_open(const char *path, struct fuse_file_info *fi)
{
    int retstat = 0;
    int fd;
    int isEncrypted;
    char user[] = "user";
    char encAttr[] = "encrypted";
    
    fd = open(path, fi->flags);
    if (fd < 0)
        retstat = bb_error("bb_open open");
          
    log_msg("\nAbout to get encryption attribute\n");  
    /* get the encryption attribute */
    isEncrypted = fgetxattr(fd, user, encAttr, 1);
    
    log_msg("\nisEncrypted: %d\n", isEncrypted);

    return retstat;
}

当我运行它时,即使从命令行设置了这个属性,fgetxattr 也总是失败(即它返回一个值 -1)。我的日志文件中的输出是:

isEncrypted = -1

显然我错误地调用了这个函数,但我不知道如何更正它。任何人都可以帮忙吗?谢谢。

【问题讨论】:

    标签: fuse file-attributes


    【解决方案1】:

    您需要在 FUSE 文件系统中实现以下功能:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-16
      • 2012-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多