I am pleased and proud to announce the new release of the second extended file system and its companion programs. This release includes a new version of the kernel code and a new version of the programs. Changes: ======== The changes in the kernel code are: - Three new mount options are supported: `check', `sync' and `sb=#'. `check' tells the kernel code to make more consistency checks when the file system is mounted. Currently, the kernel code checks that the blocks and inodes bitmaps are consistent with the free blocks and inodes counts. More checks will be added in future releases. `sync' tells the kernel code to use synchronous writes when updating an inode, a bitmap, a directory entry or an indirect block. This can make the file system much slower but can be a big win for files recovery in case of a crash (and we can now say to the BSD folks that Linux also supports synchronous updates :-). `sb=#' tells the kernel code to use an alternate super block instead of its master copy. `#' is the number of the block (counted in 1024 bytes blocks) which contains the alternate super block. An ext2 file system typically contains backups of the super block at blocks 8193, 16385, and so on. - I have change the meaning of the valid flag used by e2fsck. it now contains the state of the file system. If the kernel code detects an inconsistency while the file system is mounted, it flags it as erroneous and e2fsck will detect that on next run. - The super block now contains a mount counter. This counter is incremented each time the file system is mounted read/write. When this counter becomes bigger than a maximal mount counts (also stored in the super block), e2fsck checks the file system, even if it had been unmounted cleany, and resets this counter to 0. - File attributes are now supported. One can associate a set of attributes to a file. Three attributes are defined: `c': the file is marked for automatic compression, `s': the file is marked for secure deletion: when the file is deleted, its blocks are zeroed and written back to the disk, `u': the file is marked for undeletion: when the file is deleted, its contents are saved to allow a future undeletion. Currently, only the `s' attribute is implemented in the kernel code. Support for the other attributes will be added in a future release. - a few bugs related to times updates have been fixed by Bruce Evans and me. - a bug related to the links count of deleted inodes has been fixed. Previous versions used to keep the links count set to 1 when a file was deleted. The new version now sets links_count to 0 when deleting the last link. - a race condition when deallocating an inode has been fixed by Stephen Tweedie. The changes in the ext2 fs programs are: - e2fsck is now able to use an alternate super block specified by the -B option. This allows recovery of a file system where the super block has been damaged. - e2fsck now writes back all updated super block and descriptors backups to the disk. Previous versions used to write back only the master copy. - e2fsck does a few more checks on inodes. Due to a bug in previous versions of the kernel code, the first run of e2fsck should complain about links_count being 1 instead of 0 for each inode which has been deleted. It may also complain about dtime being set on non deleted inodes if you created your file system with an old version of mke2fs (before 0.2c+). In both cases, you can tell e2fsck to correct the errors. - tune2fs now accepts a -c option which changes the maximal mount count used by e2fsck. - Two new programs `chattr' and `lsattr' can be used to manipulate file attributes. - A new library contains the functions fgetflags, fgetversion, fsetflags, fsetversion, getflags, getversion, setflags and setversion. These functions can be used to manipulate file attributes from a program. Availability: ============= As usual, this release is available for anonymous ftp on ftp.ibp.fr in the directory /pub/linux/BETA/ext2fs. It should appear soon in the same directory on tsx-11.mit.edu. I have also uploaded it to sunsite.unc.edu and it should be moved soon to /pub/Linux/system/Filesystems/ext2. The files are: - ext2fs-0.4.tar.gz: the ext2 fs kernel code, - ext2fs-0.4.lsm: LSM entry for the ext2 fs kernel code, - e2fsprogs-0.4.tar.gz: the source files of the ext2 fs programs, - e2fsprogs-0.4.lsm: LSM entry for the ext2 fs programs. Installation: ============= To install the new kernel code, you have to extract ext2fs-0.4.tar.gz in the parent directory of the Linux kernel source directory (usually /usr/src if your kernel source is located in /usr/src/linux). This can be done by the following commands: $ cd /usr/src $ gzip -d < /xxx/ext2fs-0.4.tar.gz | tar xvf - Then you need to recompile the kernel and reboot with the new kernel to use ext2 fs 0.4. Acknowledgments: ================ The implementation of the new features has been mostly done by me but I'd like to thank Theodore T'so and Stephen Tweedie for their suggestions, advices and help during the design of this new release. Last, I'd like to dedicate this release to the french Linux activists, my friends, especially to Rene Cougnenc and Julien Simon, who do a wonderful work in helping the french Linux community. Bravo, les gars, continuez comme cela ! Remy