【问题标题】:creating a new filesystem call for FUSE filesystem为 FUSE 文件系统创建一个新的文件系统调用
【发布时间】:2013-08-09 10:32:19
【问题描述】:


我们正在使用 Python Fuse Library 实现一个文件系统。我们为此文件系统实现了“快照”功能 (api)。我们现在想通过像 (ls,mkdir,etc) 这样的系统调用来调用这个快照 API - 快照?我们如何创建这个新的系统调用?

【问题讨论】:

    标签: python filesystems system-calls fuse


    【解决方案1】:

    不幸的是,您不能只向 FUSE 添加系统调用,因为 FUSE 依赖内核来完成繁重的系统调用。您需要将其添加到内核中。

    另一方面,您确定需要完整的系统调用,还是可以在用户级别实现您需要的功能? (例如,ls,即readdir() 实际上不是系统调用,它是一个用户级库例程,它调用其他一些系统调用,例如getdents()。)

    如果您只需要对系统上运行的所有程序进行调用,请将其添加到标准库之一,或使用LD_PRELOAD 破解它。

    要向内核添加系统调用,请参见此处: http://www.csee.umbc.edu/courses/undergraduate/CMSC421/fall02/burt/projects/howto_add_systemcall.html

    对于LD_PRELOAD 方法,请参见此处: What is the LD_PRELOAD trick?

    【讨论】:

    • 我跳过了覆盖现有呼叫,我认为您不想走那条路线是有原因的。很高兴你成功了!
    【解决方案2】:

    IOCTL 是一种机制,旨在实现依赖于文件系统的自定义操作。 Btrfs implements 克隆文件,创建快照并通过 IOCTL 发送/接收。

    【讨论】:

      猜你喜欢
      • 2014-04-22
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 2017-10-04
      • 1970-01-01
      • 2021-04-20
      • 2011-12-11
      • 1970-01-01
      相关资源
      最近更新 更多