如何确定当前yaffs2文件系统数据参数

对于YAFFS2文件系统来说,我们可以通过cat /proc/yaffs来获取它的第一手资料,当然最主要还是着手于代码。

[dvr]$ cat /proc/yaffs
Multi-version YAFFS built:Aug 11 2014 12:20:16
Device 0 "File System"
start_block.......... 0         //nand flash当前分区的起始块,相对于分区来的,所以这个值所有的分区都是0
end_block............ 2037     //当前分区结束块
total_bytes_per_chunk 2048     //页大小
use_nand_ecc......... 1     //是否使用nandecc
no_tags_ecc.......... 0     //是否对yaffs2数据进行校验ecc,纯软件的
is_yaffs2............ 1     //
inband_tags.......... 0     
empty_lost_n_found... 1
disable_lazy_load.... 0
refresh_period....... 500     //刷新同期,这个值与回收相关,具体见回收机制一文
n_caches............. 10
n_reserved_blocks.... 5     //系统保留块,使用它表示系统真没空间可用了
always_check_erased.. 0     //擦除一个块后,是否进行块擦除有效检查,一般不检查,太乱费时间了
data_bytes_per_chunk. 2048     //这个也相当于页大小
chunk_grp_bits....... 0
chunk_grp_size....... 1
n_erased_blocks...... 1449     //当前可使用的好块
blocks_in_checkpt.... 0     //checkpt机制正使用的块数,这个比较重要
n_tnodes............. 3011
n_obj................ 745
n_free_chunks........ 92950     //当前可使用的好块 * 64 + 待回收的chunk
n_page_writes........ 281
n_page_reads......... 19684
n_erasures........... 3
n_gc_copies.......... 193
all_gcs.............. 40
passive_gc_count..... 40
oldest_dirty_gc_count 3
n_gc_blocks.......... 3
bg_gcs............... 3
n_retired_writes..... 0
n_retired_blocks..... 0
n_ecc_fixed.......... 0
n_ecc_unfixed........ 0
n_tags_ecc_fixed..... 0
n_tags_ecc_unfixed... 0
cache_hits........... 0
n_deleted_files...... 0
n_unlinked_files..... 0
refresh_count........ 1
n_bg_deletions....... 0
tags_used............ 34752
summary_used......... 2772

下面具体分析需要考虑的几点:
start_block.......... 0         //nand flash当前分区的起始块,相对于分区来的,所以这个值所有的分区都是0
end_block............ 2037     //当前分区结束块
n_erased_blocks...... 1449     //当前可使用的好块
blocks_in_checkpt.... 0     //checkpt机制正使用的块数,这个比较重要
n_free_chunks........ 92950     //当前可使用的好块 * 64 + 待回收的chunk
tags_used............ 34752
summary_used......... 2772
由start_block和end_block决定当前分区的总的空间大小:(0 + 2037+ 1 = 2038=》A;
tags_used与summary_used表示当前正在被使用的空间:(34752 + 2772= 37524=》B;
n_free_chunks和n_erased_blocks可得出当前的垃圾页:(92950 - 1449 * 64= 214=》 C;
n_erased_blocks得出当前系统正可以申请的块:1449=》D;

另外还有一个要考虑,就是坏块: E

E= A - B - C - D = 0;


下面来个具体有坏块的打印分析:(注意下面显示数据之前,我标记了1451个坏块)
[dvr]$ cat /proc/yaffs
Multi-version YAFFS built:Aug 11 2014 12:20:16
Device 0 "File System"
start_block.......... 0
end_block............ 2037
total_bytes_per_chunk 2048
use_nand_ecc......... 1
no_tags_ecc.......... 0
is_yaffs2............ 1
inband_tags.......... 0
empty_lost_n_found... 1
disable_lazy_load.... 0
refresh_period....... 500
n_caches............. 10
n_reserved_blocks.... 5
always_check_erased.. 0
data_bytes_per_chunk. 2048
chunk_grp_bits....... 0
chunk_grp_size....... 1
n_erased_blocks...... 1
blocks_in_checkpt.... 0
n_tnodes............. 3011
n_obj................ 745
n_free_chunks........ 87
n_page_writes........ 553
n_page_reads......... 19962
n_erasures........... 10
n_gc_copies.......... 461
all_gcs.............. 97
passive_gc_count..... 97
oldest_dirty_gc_count 9
n_gc_blocks.......... 9
bg_gcs............... 9
n_retired_writes..... 0
n_retired_blocks..... 1451
n_ecc_fixed.......... 0
n_ecc_unfixed........ 0
n_tags_ecc_fixed..... 0
n_tags_ecc_unfixed... 0
cache_hits........... 0
n_deleted_files...... 0
n_unlinked_files..... 0
refresh_count........ 1
n_bg_deletions....... 0
tags_used............ 34752
summary_used......... 2772

下面直接将几个有用的数据拿出来分析:
start_block.......... 0
end_block............ 2037 
n_erased_blocks...... 1
blocks_in_checkpt.... 0 
n_free_chunks........ 87 
tags_used............ 34752
summary_used......... 2772
由start_block和end_block决定当前分区的总的空间大小:(0 + 2037+ 1 = 2038=》A;
tags_used与summary_used表示当前正在被使用的空间:(34752 + 2772= 37524=》B;
n_free_chunks和n_erased_blocks可得出当前的垃圾页:(87 - 1* 64=23=》 C;
n_erased_blocks得出当前系统正可以申请的块:1=》D;
另外还有一个要考虑,就是坏块: E

E= A - B - C - D = 2038 * 64 - 37524 - 23 - 1 * 64 = `在这里插入代码片`
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值