02.07.2013 Views

文件系统检查工具—fsck 研究

文件系统检查工具—fsck 研究

文件系统检查工具—fsck 研究

SHOW MORE
SHOW LESS

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 或者

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!