当前位置: 首页 > news >正文

Linux内核 -- 文件系统之超级块 super_operations 字段作用与用法

struct super_operations 字段的作用与用法

super_operations 是 Linux 内核中定义的一个结构体,用于描述与文件系统超级块 (super_block) 相关的操作。这些操作涵盖了文件系统的创建、删除、挂载、卸载等。

结构体定义

struct super_operations {struct inode *(*alloc_inode)(struct super_block *sb);void (*destroy_inode)(struct inode *);void (*dirty_inode) (struct inode *, int flags);int (*write_inode) (struct inode *, struct writeback_control *wbc);void (*drop_inode) (struct inode *);void (*evict_inode) (struct inode *);void (*put_super) (struct super_block *);int (*sync_fs)(struct super_block *sb, int wait);int (*freeze_fs) (struct super_block *);int (*unfreeze_fs) (struct super_block *);int (*statfs) (struct dentry *, struct kstatfs *);int (*remount_fs) (struct super_block *, int *, char *);void (*umount_begin) (struct super_block *);int (*show_options)(struct seq_file *, struct dentry *);
#ifdef CONFIG_QUOTAssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t);ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t);
#endifint (*bdev_try_to_free_page)(struct super_block*, struct page*, gfp_t);
};

主要字段说明

1. alloc_inode

  • 作用:分配一个新的 inode(索引节点)结构体。
  • 用法:当文件系统需要分配一个新的 inode 时,会调用此函数,通常会分配和初始化与文件系统相关的特定 inode。

2. destroy_inode

  • 作用:销毁并释放 inode 结构体的资源。
  • 用法:当 inode 不再需要时,会调用此函数来释放资源。

3. dirty_inode

  • 作用:标记 inode 为脏数据,表示该 inode 需要写回磁盘。
  • 用法:文件系统在修改 inode 时调用,以标记其脏状态。
  • 参数inode 指向要标记为脏的 inode,flags 标记标志。

4. write_inode

  • 作用:将脏的 inode 写回到磁盘。
  • 用法:文件系统会实现此函数以执行 inode 的实际写回操作。

5. drop_inode

  • 作用:释放不再需要的 inode 引用。通常用于减少 inode 的引用计数。
  • 用法:当 inode 不再活跃时,调用此函数来处理 inode 的生命周期。

6. evict_inode

  • 作用:从内核的 inode 缓存中删除 inode 并释放其所有资源。
  • 用法:通常在 inode 被删除时调用,以确保其内存被正确释放。

7. put_super

  • 作用:当文件系统被卸载时调用,用于释放超级块的相关资源。
  • 用法:通常会在该函数中释放文件系统特定的内存或结构体。

8. sync_fs

  • 作用:同步文件系统的超级块和元数据到磁盘。
  • 用法:当需要同步文件系统状态时调用,wait 参数表示是否需要等待同步完成。

9. freeze_fs

  • 作用:冻结文件系统,暂停所有文件系统的写入操作。
  • 用法:文件系统将进入只读模式,不允许任何写操作,直到文件系统被解冻。

10. unfreeze_fs

  • 作用:解冻文件系统,恢复写操作。
  • 用法:配合 freeze_fs 使用,使文件系统回到可写状态。

11. statfs

  • 作用:获取文件系统的统计信息,如总大小、剩余空间等。
  • 用法:实现该函数可以使 statfs 系统调用返回特定文件系统的状态信息。

12. remount_fs

  • 作用:重新挂载文件系统,通常用于更改挂载选项(如从只读切换到可写)。
  • 用法:实现该函数可以使文件系统在运行时动态修改挂载标志。

13. umount_begin

  • 作用:在卸载文件系统开始时调用,通知文件系统即将卸载。
  • 用法:可以在文件系统卸载前进行一些必要的清理操作。

14. show_options

  • 作用:显示挂载时使用的选项。
  • 用法:通过 /proc/mounts 或类似接口显示挂载时使用的选项。

15. quota_readquota_write

  • 作用:支持文件系统的配额(quota)功能,读取和写入配额信息。
  • 用法:这些字段仅在启用了配额功能的文件系统中使用,用于管理磁盘使用配额。

16. bdev_try_to_free_page

  • 作用:尝试释放一个页缓存页面,通常在块设备文件系统中使用。
  • 用法:当需要释放内存页时,调用此函数尝试释放文件系统的缓存页面。

http://www.mrgr.cn/news/48951.html

相关文章:

  • 过滤器和拦截器的区别是什么?
  • Jain SLEE 中 Addresses
  • 机器学习中的模型设计与训练流程详解
  • SQL优化 where谓词条件is null优化
  • 秋窗的一周年创作纪念日
  • 【fisco学习记录2】多群组搭建
  • ZYNQ使用XGPIO驱动外设模块(前半部分)
  • vue拖拉拽
  • 文件传输遗漏
  • mysql学习教程,从入门到精通,SQL 约束(Constraints)(41)
  • 【机器学习】逻辑回归|分类问题评估|混淆矩阵|ROC曲线|AUC指标 介绍及案例代码实现
  • leetcode209:长度最小的子数组
  • LeetCode刷题日记之回溯算法(一)
  • 有了WPF后Winform还有活路吗?
  • ESP32-C3实现串口控制ESP32开启热点,关闭热点,连接路由,断开连接路由
  • 大数据新视界 --大数据大厂之大数据环境下的零信任安全架构:构建可靠防护体系
  • 交叉熵损失函数(Cross-Entropy Loss Function)解释说明
  • 沃趣,常用的热部署原理竟然是这样的
  • SAP SD学习笔记09 - 受注传票中的不完全Log 和 Business Partner(取引先机能)
  • 红黑树:平衡二叉查找树的经典实现