文件系统检查工具—fsck 研究
文件系统检查工具—fsck 研究
文件系统检查工具—fsck 研究
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
的值不合法,则进一步判断不可读,在 fat 表中将其标示为“bad”。<br />
if (salvage_files) reclaim_file(&fs); //-f 位设定的话,将 cluster chain 中的 free cluster 归为文件<br />
所有,<br />
else reclaim_free(&fs);// 否则归 free disk 所有。<br />
free_clusters = update_free(&fs); // 读取磁盘上的 free cluster 数目,并更新到 fs 结构中。<br />
file_unused();//??????<br />
qfree(&mem_queue);//问题:memory 是怎样使用的?<br />
if (verify) {<br />
printf("Starting verification pass.\n");<br />
read_fat(&fs);<br />
scan_root(&fs);<br />
reclaim_free(&fs); //reclaim unused cluster<br />
qfree(&mem_queue);<br />
}<br />
if (fs_changed()) {<br />
}<br />
if (rw) {<br />
}<br />
else<br />
}<br />
if (interactive)<br />
rw = get_key("yn","Perform changes ? (y/n)") == 'y';<br />
else printf("Performing changes.\n");<br />
printf("Leaving file system unchanged.\n");<br />
printf( "%s: %u files, %lu/%lu clusters\n", argv[optind],<br />
n_files, fs.clusters - free_clusters, fs.clusters );<br />
return fs_close(rw) ? 1 : 0;<br />
2. read_boot()<br />
主要完成的工作是检查 boot sector 中的内容。取得相应的文件系统信息。<br />
Read_boot(){<br />
读取分区的 boot sector;<br />
If(扇区字节数为 0,或者 cluster 大小为 0)<br />
{<br />
}<br />
退出<br />
If(分区表的数目>2 或者