Progress Of The Project

Latest Modification: Feb, 28th 2000

Feb. 23rd 2000: completed inode (de)allocation, glibc 2.1 fixes

The inode (de)allocation routines have been finished (but no doubt, they still need some testing...). Work for a cleaner can now start!

Furthermore, thanks to Al Styrski who has provided valuable debugging information, a LinLog filesystem can now be created on glibc 2.1/gcc2.95.2 systems, too. -- Auto-detection of 64bit platforms at compile-time should work again with glibc 2.1, too.

May - Nov. 30th 1999: various changes

Worked on inode allocation/deallocation policies, simplified cleaner interface, started integrating LinLogFS into the kernel sources, Name change from dtfs to LinLogFS, ...

May, 9th 1999: dtfs is ported to Linux 2.2. Work on dtfs is resumed!

In the process of porting dtfs to the 2.2 kernel series, a lot of internal changes have also been applied.

Dec, 18th 1998: The .ifile now always represents a flushed version of the filesystem

There was a bug left in the kernel module leading to situations in which a not fully flushed version of the filesystem was presented by the .ifile in user space.

Dec, 11th 1998: dtfs thesis paper finished

The design and a first implementation of dtfs have been my computer science diploma thesis. This part of the work is now finished and the thesis paper is now avialable from the dtfs documentation page . --- However, work on dtfs continues...

Nov, 23rd 1998: Kernel interface for cleaner completed

Blocks can now be refiled to the log by using an ioctl call to the .ifle (see util/ioctl-test/ioctl.test.c).

Nov, 20th 1998: Extended support for cleaner

A user-space cleaner can now ask the kernel module to release an already allocated segment again using a simple proc interface (see README for kernel module).

Furthermore, the .ifile and .atime field as seen from userspace now always represent an already committed state of the filesystem. The ifile inode can now also be obtained from the .file file...

Nov, 13th 1998: Extensive /proc support added

This feature allows easy acccess to the current segment usage bitmap by using the /proc filesystem. Unfortunately this required a small change to the kernel patch.

Nov, 12th 1998: Fixed a problem with reading files with a hole in them; introduced optional /proc/dtfs

The file-with-hole bug showed up when the hole was in a place that is referenced with indirect blocks and the hole is so big that there are indirect blocks missing. (Could easily be reproduced by doing a "cat .atime"...)

Nov, 3rd 1998: Fixed a severe buffer leak introduced with concurrency handling

The bug showed up as more and more memory being eaten up by buffers under some circumstances.

Oct, 30th 1998: A mkdtfs bug has been fixed resulting in bogus super blocks being written out.

However, this bug did not show up on every system...

Oct, 28th 1998: Fixed a bug in the concurrency handling routines when following a symbolic link

This bug showed up as a message "AAHH! Cannot find reader in list" whenever you tried to follow a symbolic link.

Oct, 26th 1998: Fixed the remaining concurrency problems.

Multiple accesses at the same time should work fine now, altough more concurrency should be possible...

Oct, 25th 1998: Implemented dir/file deletion and renaming. Furthermore, most race conditions are handled properly now.

It is now possible to delete things from a dtfs filesystem. However, a proper free inode management is still unimplemented. Furthermore, the deletion/renaming routines have not been tested very extensively.

As for race conditions, most of them should be avoided right now. Code to remove the last few problem(s) is on its way...

Oct, 20th 1998: Fixed a typo that caused a show-stopping bug in dtfs-981018

The problem was that I wanted to delete a commented out line, but accidentially deleted the line _below_ the commented out one (RCS is great!).

Oct, 18th 1998: Major dtfs bugfixing session finished!

Furthermore, .atime support is now fully functional. Furthermore a "sync" for dtfs filesystems is implemented and the implementation of a similar functionality to "bdflush" has been started. Furthermore, the implementation of .atime accesses has required an overhaul of the atl.

A first version of the dtfs FAQ has been written.

Sept, 28th 1998: Full read/write/mmap support is now implemented!

Also added benchmarks page to the dtfs homepage.

Sept, 20th 1998: (Hopefully) fixed a data corruption/lockup bug in the blockassembly that might have occured with small blocksizes and large segment sizes.

Furthermore, a link to the ext2 homepage has been added to the dtfs main page.

Sept, 18th 1998: ext2 write support/mmap is fully implemented. First major testing/bugfixing session. Furthermore the dtfs homepage has been revised.

The ext2 personality can now write files (even if blocks are referenced via indir. blocks). Furthermore the log has been tested and fixed to work with other blocksizes than the default 4kb. Two bugs in the make filesystem utility have been removed. ext2 file creation is still unimplemented. The dtfs kernel module uses smarter makefiles now.

Sept, 11th 1998: ext2 indirect block handling implemented, Source tree restructured, inode manipulation finished

No user--visible changes since Sept, 6th. But the indirect/dirty block handling of the ext2 personality is now fully implemented, altough rather untested. Furthermore proper resource allocation services are now implemented. The inode manipulation code now works without the chance of creating inconsistencies.

Sept, 6th 1998: ext2 personality can create hard links

The ext2 personality can create hard links. However, it cannot hanldle indirect blocks up to now.

Aug, 31st 1998: dtfs documentation updated

The dtfs main document now outlines the dtfs kernel module implementation. Furthermore it describes the interface between the dtfs log and a filesystem personality.

Aug, 22nd 1998: The log is implemented and a dummy tradfs exists

The log is a layer that implements the traditional filesystem's view of the underlying disk as an infinite log. The implementation has been tested with a "dummy" traditional file system that does nothing than producing dirty blocks. Testcases with the default "mkdtfs" filesystem geometry and one active trad. filesystem work fine.

For the first time, dtfs needs a (small) kernel patch in order to do its job (more information about that can be found on the dtfs kernel module page).

Furthermore, the older changelog entries on the homepage have been moved to a separate page.

July, 22nd 1998: dtfs kernel module writes to the device for the 1st time

The dtfs kernel module now contains code to manage all the device--related information and the per-filesystem information. For testing purposes the dtfs kernel allocates 22 segments on each mount (so this is not a bug, but a feature). Download the new dtfs utilities and the kernel module to check it out.

July, 13th 1998: dtfs specification bugfix/non-prototype kernel module

A bug has been discovered in the dtfs specification concerning the keeping track of (free)inodes. It must of course be done on a per-filesystem version basis. The new version 1.5 of the dtfs design specifications has a few other changes too.

Furthermore, implementation of a non-prototype kernel module has been started, but no user-visible changes yet.

Click here to see information about dtfs development before July, 13th.

Christian Czezatke, email: