I did a post last year about how lines of code for some of the primary Linux filesystems were evolving. It seemed to spark people’s interest, so here’s an update through v3.4-rc4:
(Click to see full size).
I added regression lines this time – btrfs should catch xfs around kernel version 3.8 or so. :)
Again, I draw no strong conclusions from this – I just think it’s interesting to see how things are moving as these filesystems evolve.
I used CLOC to count lines; the numbers on the graph reflect no blank lines & no comments. For ext3 & ext4 I included jbd[2] and some of the peripheral files they use; code snippet from the script:
ext3lines=`cloc fs/ext3/*.[ch] include/linux/ext3*.h fs/jbd/*.[ch] \
include/linux/jbd.h fs/mbcache.c include/linux/mbcache.h \
| grep SUM | awk '{print $5}'`;
ext4lines=`cloc fs/ext4/*.[ch] include/linux/ext4*.h fs/jbd2/*.[ch] \
include/linux/jbd2.h fs/mbcache.c include/linux/mbcache.h \
| grep SUM | awk '{print $5}'`;
xfslines=`cloc fs/xfs/*.[ch] fs/xfs/*/*.[ch] include/linux/dqblk_xfs.h \
| grep SUM | awk '{print $5}'`;
btrfslines=`cloc fs/btrfs/*.[ch] | grep SUM | awk '{print $5}'`;
gfs2lines=`cloc fs/gfs2/*.[ch] include/linux/gfs2* \
| grep SUM | awk '{print $5}'`;
(Some of the files above no longer exist, but I used the same script to iterate over all the kernel versions.)