日期:2014-05-16 浏览次数:20698 次
曾经以为人生就这样了,浮躁的心拒绝再看代码。然而来到美国两年之后,我于本月初去了一趟拉斯维加斯,发现在那儿找个美国小姐要八百美金,而且还不是包夜。当那个金发美女都已经走进我的房间,我却因为价钱太贵承受不起而决定取消的时候,我觉得我的人生真是太失败了。那晚,看她出去之后,我内心一阵郁闷,于是打开电脑开始看A片,怎奈看到一半电脑竟然说文件系统崩溃了。我心想ext4文件系统不是号称很强大吗,怎么这么容易就崩溃了呢?而且平时也不崩溃,怎么关键时候就这么坑爹啊!于是我连夜看了一晚上ext4文件系统的代码,发现是由该文件系统里的一个bug引起的。折腾了半天,给内核打了个补丁,解决了这个问题,系统能用了,然而却再也没心情看A片了,倒是觉得有必要把这些ext4文件系统的代码的阅读心得给记下来。于是便有了这个系列文章。
看内核代码的第一个问题是相关的代码到底在哪里。话说距离写usb那些文字已经过去五年了,而我已经从当初的IT民工变成了今日的北美猥琐男。尽管我已不再年轻,但我依然像杨钰莹一样纯洁,我依然保留着那份男人的直觉,这直觉告诉我,ext4文件系统相关的代码在fs/ext4目录下面,列举一下该目录里面的内容:(我看的代码是Linux Kernel 3.4.4版本的)
$ls
acl.c bitmap.c ext4_extents.h ext4_jbd2.h fsync.c indirect.c Kconfig mballoc.h move_extent.c resize.c truncate.h xattr_security.c
acl.h block_validity.c ext4.h extents.c hash.c inode.c Makefile migrate.c namei.c super.c xattr.c xattr_trusted.c
balloc.c dir.c ext4_jbd2.c file.c ialloc.c ioctl.c mballoc.c mmp.c page-io.c symlink.c xattr.h xattr_user.c
用wc命令看一下,
$wc -l *
439acl.c
77acl.h
766balloc.c
31bitmap.c
268block_validity.c
667dir.c
296ext4_extents.h
2372 ext4.h
154ext4_jbd2.c
399ext4_jbd2.h
4866 extents.c
262file.c
271fsync.c
208hash.c
1158 ialloc.c
1502 indirect.c
4676 inode.c
509ioctl.c
85Kconfig
14Makefile
5047 mballoc.c
222mballoc.h
604migrate.c
353mmp.c
1423move_extent.c
2607 namei.c
433page-io.c
1689 resize.c
4980 super.c
56symlink.c
43truncate.h
1608 xattr.c
155xattr.h
82xattr_security.c
58xattr_trusted.c
61xattr_user.c
38441 total
纯ext4的代码就有三万八千多行。如果一天看一行的话,一百年也才能看个三万六千多行。但是没办法,学计算机的人都只有苦逼的命。像我这样的屌丝对于生活其实没有太多选择,如果能选择,那我希望自己生活在新闻联播里,那