November 20th, 2006 by Keith

SpadFS 0.9.2 – Filesystem for Linux

Posted in Development Software, Linux

First of all, I would not say this is a fully developed software. SpadFS 0.9.2 is a new Linux filesystem developed by Mikulas during his PhD research, which eventually become part of his thesis.

It is an attempt to bring features of advanced filesystems (crash recovery, fast directories) and good performance without increasing code complexity too much. Uses crash counts instead of journaling (because journaling is too complex and bug-prone) and uses hash instead of btrees for directory organization.

My advice is not to implement this on production machine. Know what you are doing to your Linux file system before implementing the change. The outcome may be irreversible. Nonetheless, this new filesystem certainly adds a new taste to the current ext2/ext3 and Reiser filesystems.

Some of the new features are:

  • * New method to maintain consistency across crashes — crash counts.
  • * 48-bit sector numbers. Supports device size up to 144PB.
  • * Variable block size from 512 bytes to machine page size. Due to design of Linux page cache, small blocksize increases CPU consumption considerably.
  • * Large directories are organized in a similar way as Fagin’s extendible hashing. Does not use btrees.
  • * Files are embedded directly in directory structure (unless hardlink is created). Thus, ls -la command doesn’t have to seek to inodes.
  • * Free space is described in lists of extents rather than bitmaps like in most common filesystem. If a filesystem becomes too fragmented, list of free extents is converted to bitmap.
  • - Uses crash counts to maintain consistency across crashes instead of journaling.
  • - 48-bit sector numbers. Block size from 512B to machine page size.
  • - Large directories are organized in hashed structure similar to Fagin’s extendible hashing. No btrees.
  • - Files without hardlinks and with at most 2 fragments are embedded directly in the directory, saving one seek on open operation.
  • - Fragmented files are organized in trees of indirect blocks of increasing depths, like on classical Unix filesystem, except that they contain extents instead of blocks.
  • - Free space is described in free block runs, forming a sorted linked list. Average lookup/add/delete complexity in such allocation page is sqrt(n). When this structure overflow, it is split. When free space is too fragmented, this structure is converted to bitmap.


  • - Linux kernel 2.6 with modules enabled.
  • - Block device with size from 16MB to 2^57 bytes.
  • - Disk that can atomically write one sector (512 bytes) so that the sector contains either old or new content in case of crash.

Make sure you read the user manual before installing the new file system.

Download Link
SpadFS 0.9.2

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>




  • German Spanish French Italian Japanese Korean Portuguese Chinese