【问题标题】:How to get entire file size when fuse write熔断写入时如何获取整个文件大小
【发布时间】:2019-02-03 18:43:18
【问题描述】:

我正在开发一个基于 fuse 的文件系统。 但在开发过程中遇到了困难。

我的问题是'如何在 fuse_write 时获取整个文件大小'。

在 fuse_write 中,

static int test_fuse_write(const char *path, const char *buf, size_t size,
          off_t offset, struct fuse_file_info *fi)

这些参数与源文件无关。仅与目标文件有关。 我想要一个总文件大小。

例如,将 ext4 文件系统中的文件“A”复制到 fuse 文件系统中的文件“B”时。如果文件'A'的大小是12MB,当第一次调用fuse_write函数时,有没有办法知道文件大小(12MB)?

对不起,我的英语不够。

【问题讨论】:

    标签: fuse


    【解决方案1】:

    答案是否定的。

    不管 fuse 文件系统是什么,write 是一个文件系统操作,而“copy”是一个用户实用程序(例如 Unix 中的 cp)。复制实用程序对源文件执行 read 操作,对目标文件执行 write 操作。 reads 和 writes 是“不知道”彼此的。可以挖source code of cp

    更何况,用户实用程序完成的任何 readwrite 操作都被内核分成通常相同大小(例如 64K)的后续块。因此,在您的 fuse write 函数的实现中,几兆字节的数据写入操作将被视为一系列(比方说)64K 长度的后续调用。

    你应该感到鼓舞的是,这正是你在编写 fuse 文件系统时所获得的启迪......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-02
      • 2020-02-09
      • 1970-01-01
      • 1970-01-01
      • 2013-02-22
      • 2012-02-03
      • 1970-01-01
      • 2013-06-18
      相关资源
      最近更新 更多