⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 super.c.txt

📁 linux内核学习笔记 希望想看的人可以很快下载到
💻 TXT
字号:
any problems, send mails to sindybear@163.com


相关文件


**********************日志系统的建立**********************************************
相关文件
	/fs/jbd/journal.c

(1)
struct super_block * ext3_read_super (struct super_block * sb, void * data,int silent)
	if(…) {			//按照参数,进行处理
		ext3_load_journal				//装载日志
	} else {
		ext3_create_journal(sb, es, journal_inum)	//这个函数就是日志系统的入口。
	}
				

(2)
static int ext3_load_journal(struct super_block * sb, struct ext3_super_block * es)
	/*
	 * 从超级块中将日志信息读出来
	 */
	if (journal_inum) {		//如果日志存在inode结构中
		if (!(journal = ext3_get_journal(sb, journal_inum)))	//从inode中读出来
			return -EINVAL;
	} else {			//如果存在线性设备中
		if (!(journal = ext3_get_dev_journal(sb, journal_dev)))	//从设备种读出来
			return -EINVAL;
	}

	journal_load(journal);	//装载日志信息。
	


这个函数是日志系统的核心,他负责从磁盘上将日志系统的超级块读出来,初始化整个日志系统。
并且启动整个日志系统。这个函数就是日志系统的盘古 :-)。
static int ext3_create_journal(struct super_block * sb,struct ext3_super_block * es,int journal_inum)
	if (!(journal = ext3_get_journal(sb, journal_inum)))	//得到磁盘上的日志。
		return -EINVAL;
	
	if (journal_create(journal)) 	//初始化这个日志,并将信息刷新到磁盘上,并启动日志功能
		return -EIO;		//如果出错,返回错误
	
	……	//更新ext3文件系统的超级块
	ext3_commit_super(sb, es, 1);	//刷新ext3文件系统的超级块到磁盘上





static journal_t *ext3_get_journal(struct super_block *sb, int journal_inum)
	journal_inode = iget(sb, journal_inum);		//首先得到日志对应的inode
	if (!journal_inode->i_nlink) 			//如果inode又连接,出错
		return NULL;
	……						//进行合法性检查
	journal = journal_init_inode(journal_inode);	//使用这个inode初始化日志,读出日志的超级块等
	return journal;					//返回这个新生成的日志
***********************************************************************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -