File Systems/ReiserFS

From ReactOS Wiki
Jump to: navigation, search

Reiser FS is a popular file system developed by Namesys. The term "Reiser" and "ReiserFS" can refer to both versions 3 and 4. This page deals with both.

Version 3 (Known as "ReiserFS")

Hans Reiser classifies version 3 as depricated and recommends using version 4, which solves design issues in its predecessor.

ReiserFS Driver for Windows

  • Reiser Driver For Windows (RFSD), a ReiserFS Installable File System Driver (IFSD) for Windows XP. Project started May 2005, stalled as of July 2005, presumably from lack of beta testers/perceived interest. Provides infrastructure for ReiserFS version 3, not Reiser4 (yet).
  • Windows Driver Examples, contains some more updated information regarding ReiserFS on Windows along with a more recently updated version of the driver. The updated driver is only available in source code and must be compiled then installed by hand. Source code is here: RFSD 0.26. The new version fixes some bugs as well as usability on Win XP SP2 and Vista.

Recent Revision History from the included readme.txt:

    0.26 2015-12-25
     Updated to pass all code analyzes in WDK 7.1.0.
     Can be compiled with Visual Studio Community 2015 and
     Windows Driver Kit (WDK) 10.
     The set file information request FilePositionInformation is now included
     in the read-only version of the driver.
   0.25.5 2009-11-01
     Fixed a bug that made the driver reference an IRP after it was completed,
     this error showed up on Windows 7 but it could happen on all versions of
     Windows.
   0.25.4 2009-10-23
     Fixed a bug in RfsdStringLength() that made the driver crash sometimes
     on the 64-bit version of Windows Vista.
   0.25.3 2009-04-19
     Can be compiled with the WDK.
   0.25.2 2008-09-15
     Fixed the two read bugs. (One of them was releated to the tail of a file,
     when tail packing is enabled in ReiserFS, witch is the default, the last
     part of the file is stored as one or two direct items and the driver
     didn't read the second one. The other bug was in RfsdReadInode() and
     caused an error in some cases and inefficiency in most cases)
     Changed some DbgPrint() and DbgBreakPoint() so they are only included in
     the debug version of the driver.
   0.25.1 2008-09-09
     Fixed the directory listing bug. (This bug apeared when the caller
     supplied buffer didn't fit all the information for a directory so that
     more than one query directory call was needed, when processing the first
     directory entry in the second (and consecutive) calls the filename length
     was misscalculated since information on the directory entry before wasn't
     saved between the calls)
   0.25 2008-09-05
     Fixed the BSOD on Windows XP SP2. (buffer overrun in RfsdBuildBDL2())
     Ported the code to 64-bit.

Version 4 (Known as "Reiser4")

Reiser4 is a new "from scratch" version of the ReiserFS file system,

It has the following advanced features:

  • efficient journaling through wandering logs
  • efficient support of small files, in terms of disk space and speed
  • fast handling of very large directories with hundreds of millions of files
  • flexible plugin infrastructure (through which special metadata types, encryption and compression will be supported)
  • atomic file system modification
  • dynamically optimized disk-layout through allocate-on-flush (also called delayed allocation in XFS)
  • transaction support

Some of the more advanced Reiser4 features (such as user-defined transactions) are also not available because of a lack of a VFS API for them.

An online repacker (similar to the defragmentation utilities provided with other filesystems), or the possibility to resize existing filesystems (standard with other Linux filesystems, including ReiserFS version 3) are currently not available; the creators of Reiser4 say they will implement these if someone pays them to do so.

Reiser4 uses dancing trees, a version of wikipedia:B*-trees in which underpopulated nodes won't get merged until a flush to disk except under memory pressure or when a transaction completes. Such a system also allows Reiser4 to create files and directories without having to waste time and space through fixed blocks.

As of 2004, benchmarks performed by Namesys show that Reiser4 is 10 to 15 times faster than ext3 working on files smaller than 1Kb. It is typically twice the performance of ext3 for general purpose filesystem usage patterns, and ext3 is its most serious competitor.

Reiser4 source code

Reiser4 Driver for Windows

Developers: Josias Hosang, Oliver Kadlcek and Christian Oberholzer (University of Applied Sciences Rapperswil, Switzerland)

English translation of the short description:

In the recent years ReiserFS matured as one of the most important and best file systems for Linux. Specifically it became the default file system of the SuSE distribution. With goal to allow access from Windows XP on dual boot PCs on Reiser4 partitions, a Reiser4 file system driver has been developed as part of a student research project. According to the description of the Reiser4 file system and the documentation of Microsoft's Installable File System Kit it was possible to port an open Reiser4 implementation for Linux to Windows XP and it's reading capabilities could be implemented completely and quite stable. Other driver interfaces have been realized so far they were needed for regular use under Windows. Beside the driver software and the usual project documentation a complete analysis document about the functionality of Reiser4 and an overview about file system development for Windows has been made.

Status

The developers are willing to supply the results of their student research project to the ReactOS project. Currently they have not published their code.

In the current state the code requires Microsoft's IFS Kit to compile and support of the free ntifs.h has not been implemented yet. Therefore only the non-MS parts can -- of course -- be published. The developers would help to implement the GPL headers and perhaps also help porting the already working parts to ReactOS.

The Reiser4 IFS driver currently supports read only access to the file system. It is estimated that adding write support may take 1000 hours (or more).

Another point is that the driver should be merged with the current Linux driver to stay up to date.

Please ask Pythagoras1 to get the dev's contact addresses: AT102574.gif