66 * it fall into space where we have actually writen data
77 * into. It's different from valid bits in summary entry
88 */
9+
910/*
10- *1 is_valid_address:�ȸ�ݲ����ȡ��ǰָ��ָ��Ķ������ڵĶκ�
11- * @sbi:ָ������Ϣ��ָ��ʵ��
12- * @addr:���ַ
13- * ���öκŵ��ڼ���ָ�����ݿ����ڵĶκţ��ص�ǰ�������ڵ���ݵ�ƫ�ƣ�֤���õ�ַ��Ч
14- * ͬ�?�����ڵ�ǰnode���ڵĶκţ��ص�ǰ�������ڵ�node��ƫ�ƣ�Ҳ֤���õ�ַ��Ч
15- * ����Ϊ��Ч��ַ,��Ϊ0
11+ * * 1 is_valid_address:先根据参数获取当前指针指向的对象所在的段号
12+ - * @sbi:指向超级块信息的指针实例
13+ - * @addr:块地址
14+ - * 如果该段号等于检查点指针的数据块所在的段号,则返回当前检查点所在的数据的偏移,证明该地址有效
15+ - * 同理,如果等于当前node所在的段号,则返回当前检查点所在的node的偏移,也证明该地址有效
16+ - * 否则,为无效地址,置为0
1617 */
1718bool is_valid_address (struct hmfs_sb_info * sbi , block_t addr )
1819{
@@ -27,9 +28,9 @@ bool is_valid_address(struct hmfs_sb_info *sbi, block_t addr)
2728 return get_seg_entry (sbi , segno )-> valid_blocks > 0 ;
2829}
2930/*
30- *2 total_valid_blocks������main area�������жΣ�����ij�����������õ�����Ч��ĸ���
31- *@ sbi:ָ������Ϣ��ָ��ʵ��
32- *@ return:�ܵ���Ч��ĸ���
31+ *2 total_valid_blocks:遍历main area区域所有段,计算某个超级块中用到的有效块的个数
32+ - *@ sbi:指向超级块信息的指针实例
33+ - *@ return:总的有效快的个数
3334 */
3435
3536unsigned long total_valid_blocks (struct hmfs_sb_info * sbi )
@@ -44,10 +45,10 @@ unsigned long total_valid_blocks(struct hmfs_sb_info *sbi)
4445 return sum ;
4546}
4647/*
47- *3 get_seg_vblocks_in_summary:����SSA����ĵ�ǰ���£�����ÿ��ÿҳÿ�����Ч�ڵ�ĸ���
48- *@ sbi:ָ������Ϣ��ָ��ʵ��
49- *@ segno:�κŵ�����
50- *@ return:���ص�ǰ��Ч�ڵ�ĸ���
48+ *3 get_seg_vblocks_in_summary:遍历SSA区域的当前段下,遍历每段每页每块的有效节点的个数
49+ - *@ sbi:指向超级块信息的指针实例
50+ - *@ segno:段号的类型
51+ - *@ return:返回当前有效节点的个数
5152 */
5253unsigned long get_seg_vblocks_in_summary (struct hmfs_sb_info * sbi , seg_t segno )
5354{
@@ -79,11 +80,12 @@ unsigned long get_seg_vblocks_in_summary(struct hmfs_sb_info *sbi, seg_t segno)
7980 }
8081 return count ;
8182}
83+
8284/*
83- *4 __mark_sit_entry_dirty:��¼��ǰ����SIT�����entry�ĸ���
84- *@sit_i��ָ�� SIT���ʵ��
85- *@segno���κŵ�����
86- *@return:���ص�ǰ��ǰSIT�����entry�ĸ���
85+ *4 __mark_sit_entry_dirty:记录当前段中SIT中脏的entry的个数
86+ - *@sit_i:指向 SIT表的实例
87+ - *@segno:段号的类型
88+ - *@return:返回当前当前SIT总脏的entry的个数
8789 */
8890static void __mark_sit_entry_dirty (struct sit_info * sit_i , seg_t segno )
8991{
@@ -92,11 +94,12 @@ static void __mark_sit_entry_dirty(struct sit_info *sit_i, seg_t segno)
9294}
9395
9496/* Return amount of blocks which has been invalidated */
97+
9598/*
96- *5 invalidate_delete_block:���жϵ�ǰ���Ƿ������°汾�Ŀ飬����ǣ���ݿ��ַ��ȡ�κţ�ͬʱ���öα��Ϊ��
97- *@sbi:ָ������Ϣ��ָ��ʵ��
98- *@addr:��ǰ��ĵ�ַ
99- *@return:������Ч�Ŀ������
99+ *5 invalidate_delete_block:先判断当前块是否是最新版本的块,如果不是,根据块地址获取段号,同时将该段标记为脏
100+ - *@sbi:指向超级块信息的指针实例
101+ - *@addr:当前块的地址
102+ - *@return:返回无效的块的数量
100103 */
101104int invalidate_delete_block (struct hmfs_sb_info * sbi , block_t addr )
102105{
@@ -119,9 +122,8 @@ int invalidate_delete_block(struct hmfs_sb_info *sbi, block_t addr)
119122}
120123
121124/*
122- *6 init_min_max_mtime:����ǰentry�ı?Ȼ�����ǰ�����������еĶΣ�ͬʱ�������ж�SIT�������Сmtime
123- *@sbi:ָ������Ϣ��ָ��ʵ��
124- *
125+ - *6 init_min_max_mtime:先锁定当前entry的表,然后遍历当前超级块中所有的段,同时设置所有段SIT的最大、最小mtime
126+ - *@sbi:指向超级块信息的指针实例
125127 */
126128static void init_min_max_mtime (struct hmfs_sb_info * sbi )
127129{
@@ -143,10 +145,10 @@ static void init_min_max_mtime(struct hmfs_sb_info *sbi)
143145 unlock_sentry (sit_i );
144146}
145147/*
146- *7 update_sit_entry:��¼��ǰ�ε���Ч�Ŀ���ͬʱ��¼��ǰ�εĿ��еĺ���Ĵ�С�����Ҹ���µ���Ч��SITentry�����µ�ǰ�ε�entry��Ϣ
147- *@sbi:ָ������Ϣ��ָ��ʵ��
148- *@segno���κŵ�����
149- *@del����ƫ��
148+ - *7 update_sit_entry:记录当前段的有效的块数,同时记录当前段的空闲的和脏的大小,并且根据新的有效块SITentry,更新当前段的entry信息
149+ - *@sbi:指向超级块信息的指针实例
150+ - *@segno:段号的类型
151+ - *@del:段偏移
150152 */
151153
152154void update_sit_entry (struct hmfs_sb_info * sbi , seg_t segno ,
@@ -172,8 +174,8 @@ void update_sit_entry(struct hmfs_sb_info *sbi, seg_t segno,
172174}
173175
174176/*
175- *8 reset_curseg:���õ�ǰ�ε�δ��������ʼλ��
176- *@seg_i:��ǰ�εĶκ�
177+ - *8 reset_curseg:重置当前段的未分配块的起始位置
178+ - *@seg_i:当前段的段号
177179 */
178180static void reset_curseg (struct curseg_info * seg_i )
179181{
0 commit comments