--- wikisrc/projects/project/ext3fs.mdwn 2011/11/06 19:58:46 1.1 +++ wikisrc/projects/project/ext3fs.mdwn 2014/02/27 05:15:23 1.4 @@ -1,32 +1,27 @@ [[!template id=project -title="Implement Ext3 file system support" +title="Implement ext3 file system support" contact=""" [tech-kern](mailto:tech-kern@NetBSD.org) """ category="filesystems" -difficulty="medium" -duration="1-2 months" +difficulty="hard" +duration="2-3 months" description=""" -The Ext2 file system is the de-facto standard, Unix-like file system used on -Linux installations. Ext2 does not have journaling capabilities, so Ext3 was -built on top of it to add them without breaking compatibility with Ext2. Ext3 -is now a stable journaled file system used on lots of Linux installations. - -NetBSD currently fully supports the Ext2 file system at the kernel level. -Unfortunately there is no support for the new features included in Ext3, -although Ext3 file systems can be mounted provided that their journal is clean. -It would be very nice if NetBSD had Ext3 file system support because the system -could immediately gain a journaled file system as well as compatibility with -Linux (imagine having both systems installed on a single partition!). - -Therefore, the aim of this project is to add Ext3 support to the NetBSD kernel -accompanied by any userland code required to support it. This shouldn't be too -difficult because, as we already mentioned, Ext2 is implemented in the NetBSD -kernel (see src/sys/ufs/ext2fs/) and Ext3 is an extension of it. Also, WAPBL -recently added journalling to FFS; maybe parts of the code could be reused. +The ext2 file system is the lowest common denominator Unix-like file system in the Linux world, as ffs is in the BSD world. NetBSD has had kernel support for ext2 for quite some time. + +However, the Linux world has moved on, with ext3 and now to some extent also ext4 superseding ext2 as the baseline. NetBSD has no support for ext3; the goal of this project is to implement that support. + +Since ext3 is a backward-compatible extension that adds journaling to ext2, NetBSD can mount clean ext3 volumes as ext2 volumes. However, NetBSD cannot mount ext3 volumes with journaling and it cannot handle recovery for crashed volumes. +As ext2 by itself provides no crash recovery guarantees whatsoever, this journaling support is highly desirable. + +The ext3 support should be implemented by extending the existing ext2 support (which is in src/sys/ufs/ext2fs), not by rewriting the whole thing over from scratch. It is possible that some of the ostensibly filesystem-independent code that was added along with the ffs WAPBL journaling extensions might be also useable as part of an ext3 implementation; but it also might not be. + +The full requirements for this project include complete support for ext3 in both the kernel and the userland tools. It is possible that a reduced version of this project with a clearly defined subset of these requirements could still be a viable GSOC project; if this appeals to you please coordinate with a prospective mentor. + +An additional useful add-on goal would be to audit the locking in the existing ext2 code; the ext2 code is not tagged MPSAFE, meaning it uses a biglock on multiprocessor machines, but it is likely that either it is in fact already safe and just needs to be tagged, or can be easily fixed. (Note that while this is not itself directly related to implementing ext3, auditing the existing ext2 code is a good way to become familiar with it.) """ ]]