JBD2日志模块

一、提供的接口

  • 创建和销毁journal_t数据结构,用来表示一个日志文件:可以使用jbd2_journal_init_inode()或jbd2_journal_init_dev()函数来创建,使用jbd2_journal_destroy()函数来销毁。
  • 加载和清除日志文件,用来处理日志内容:可以使用jbd2_journal_load()或jbd2_journal_wipe()函数来加载或清除日志文件,使用jbd2_journal_recover()或jbd2_journal_skip_recovery()函数来恢复或跳过日志文件中的事务。
  • 开始和停止事务,用来将一组原子操作组合在一起:可以使用jbd2_journal_start()或jbd2_journal_stop()函数来开始或停止一个事务,使用jbd2_journal_extend()或jbd2_journal_restart()函数来延长或重启一个事务。(其中journal_start的主要作用是取得一个原子操作描述符handle_t,如果当前进程有一个,则直接返回,否则,需要创建一个)(journal_stop主要作用将handle与transaction断开连接,调整所属transaction的额度)。
  • 获取和释放缓冲区的访问权限,用来修改文件系统的块。可以使用jbd2_journal_get_create_access()、jbd2_journal_get_write_access()或jbd2_journal_get_undo_access()函数来获取不同类型的访问权限,使用jbd2_journal_dirty_metadata()、jbd2_journal_forget()或jbd2_journal_release_buffer()函数来释放访问权限。
  • 管理检查点,用来回收日志空间。可以使用jbd2_log_start_commit()、jbd2_log_wait_commit()或jbd2_log_do_checkpoint()函数来开始、等待或执行一个检查点,使用jbd2_cleanup_journal_tail()函数来清理日志尾部。
posted @ 2023-04-23 16:29  月光下的脚步  阅读(315)  评论(0编辑  收藏  举报