[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ext3fs 0.1 for the Hurd

From: Ognyan Kulev
Subject: ext3fs 0.1 for the Hurd
Date: Tue, 10 Aug 2004 18:53:36 +0300
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040413 Debian/1.6-5

/* Cc: ext2-devel, to let them know about this effort.  */

I'm very pleased to announce the first publicly available version of the ext3fs translator for the Hurd.

Download location: http://debian.fmi.uni-sofia.bg/~ogi/hurd/ext3fs/

This is pre-alpha quality software and it's unusable for any serious use. Well, you can succeed in creating file or two ;-)

The primary reason for releasing in this highly unstable state is that I'm going on vacation for one week and I already announced that 0.1 will be released. Unfortunately, bug fixing has progressed very, very slowly.

Although some important stuff is missing, there won't be great design changes for the final 1.0. But who knows, looking at how ugly some things are done ;-) I'll be glad to discuss issues about this implementation.

Tomorrow I'll release new ext2fs patch with Neal's changes and some fixed bugs (in patch 20040421) spotted during debugging of ext3fs.

The README file follows:

        ext3fs - ext3 filesystem translator for the Hurd

This is implementation of the ext3 journalling filesystem, as used in
Linux.  It steps heavily on libraries already present in the Hurd, but
modifies them so that journalling is supported.  Hurd's ext2fs
translator is taken as a base, which is based on Linux EXT2 code.

Instead of buffer cache, as found in Linux, store cache is used.  It
has two important features, designed especially for ext3: buffer sets
and shadow buffers.  Buffer sets allow grouping of buffers, e.g. all
blocks of a transaction that has to be stored in log.  Shadow buffer
is copy of block.  Changing it doesn't affect the real block in store.
Their purpose is to replace committed_data and frozen_data in Linux.

What in Linux ext3 is called "handle", here is named "update".  In the
Hurd, a great amount of work in processing each filesystem request
from users is done by libdiskfs.  The filesystem server just defines
callbacks for inserting name into directory, reading and writing
i-node, etc.  So libdiskfs is renamed to libe3diskfs and each user
request creates struct rpc_context that is passed to all specific
filesystem server callbacks.  The purpose of rpc_context is to hold
the update in transaction.  Using TLS (Thread Local Storage) should be
investigated in the future.

Version 0.1 is pre-alpha software.  You shouldn't expect much from

Major defects:

* No support for orphaned i-nodes
* No revoked blocks (libjstore has untested code)
* No recovery on startup (libjstore has untested code)
* Fixed update credits (20 blocks)

Minor defects:

* Only data=writeback is supported.
  This is inherited from Hurd's ext2fs.  File content is managed
  separately from main store.
* Don't do "make install" -- I haven't even tried to do it.  Just use
  "ext3fs/ext3fs" after build.

Subversion repository is used for the ext3fs development.  Its address


You can checkout the latest ext3fs by using the following command:

   svn checkout http://svn.fmi.uni-sofia.bg/projects/ext3fs/trunk/ext3fs

reply via email to

[Prev in Thread] Current Thread [Next in Thread]