Difference between revisions of "File Systems/ReiserFS"

From ReactOS Wiki
Jump to: navigation, search
(Reiser Driver for windows: thought I should clear the link up a bit...)
 
(10 intermediate revisions by 6 users not shown)
Line 1: Line 1:
'''Reiser FS''' is a popualar [[file system]] developed by Namesys. The term "Reiser" and "ReiserFS" can refer to both versions 3 and 4. This page deals with both.
+
'''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") ==
 
== Version 3 (Known as "ReiserFS") ==
Take a look at [http://freehost19.websamba.com/slacker2k2/rfstoolgui/ this].
+
Hans Reiser classifies version 3 as depricated and recommends using version 4, which solves design issues in its predecessor.
 +
 
 +
=== ReiserFS Driver for Windows ===
 +
* [http://rfsd.sourceforge.net/ 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).
 +
 
 +
* [http://www.acc.umu.se/~bosse/ 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: [http://www.acc.umu.se/~bosse/rfsd/rfsd-0.26.zip 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") ==
 
== Version 4 (Known as "Reiser4") ==
Line 8: Line 47:
  
 
It has the following advanced features:  
 
It has the following advanced features:  
 +
* efficient journaling through wandering logs
 
* efficient support of small files, in terms of disk space and speed
 
* efficient support of small files, in terms of disk space and speed
* fast handling of large and very large directories with hundreds of millions of files,
+
* fast handling of very large directories with hundreds of millions of files  
* flexible plugin infrastructure,  
+
* flexible plugin infrastructure (through which special metadata types, encryption and compression will be supported)
* [[wikipedia:Atomic transaction|atomic]] file system modification,
+
* [[wikipedia:atomic transaction|atomic]] file system modification
* efficient journaling through wandering logs,
+
* dynamically optimized disk-layout through allocate-on-flush (also called [[wikipedia:delayed allocation|delayed allocation]] in XFS)
* dynamically optimized disk-layout (through allocate-on-flush - called [[wikipedia:Delayed allocation|Delayed allocation]] in the XFS world, and online repacker)
+
* transaction support
* Integration of metadata into the file system name-space.
 
  
Additionally, Reiser4 introduces [[wikipedia:Dancing tree|dancing trees]], a version of [[wikipedia:B*-tree|B*-trees]] with the key difference being that underpopulated nodes won't get merged until a flush to disk is forced by low memory or a completed transaction. Such a system also allows Reiser4 to create files and directories without having to waste time and space through fixed blocks.
+
Some of the more advanced Reiser4 features (such as user-defined transactions) are also not available because of a lack of a [[wikipedia:Virtual file system|VFS]] API for them.
  
Benchmarks performed by Namesys show that Reiser4 is 10 to 15 times faster than [[File Systems/ext3|ext3]] working on files smaller than 1Kb. As of 2004, it is not supported on many Linux distributions, although its predecessor is.
+
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 [[wikipedia:Dancing tree|dancing trees]], a version of [[wikipedia:B*-tree]]s 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 [[File Systems/ext3|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 source code ===
  
* [ftp://ftp.namesys.com/pub/reiser4progs File system utilities]
+
* [https://sourceforge.net/projects/reiser4/files/?source=navbar fs driver source for linux 4.x]
  
* [ftp://ftp.namesys.com/pub/reiser4progs/grub/ grub patches (may be usable for freeloader support)]
+
* [https://github.com/edward6/reiser4 File system utilities]
  
* [ftp://ftp.namesys.com/pub/reiser4-for-2.6/ fs driver source for linux 2.6]
+
* [http://www.kernel.org/pub/linux/utils/fs/reiser4/ File system utilities] (inactive link)
  
=== Reiser Driver for windows ===
+
* [ftp://ftp.namesys.com/pub/reiser4progs/grub/ grub patches (may be usable for freeloader support)] (inactive link)
  
* [http://rfsd.sourceforge.net/ 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).
+
* [ftp://ftp.kernel.org/pub/linux/kernel/people/edward/reiser4/reiser4-for-2.6/ fs driver source for linux 2.6] (inactive link)
 +
 
 +
=== Reiser4 Driver for Windows ===
 +
* [http://www.coberholzer.info/projects_os_reiser4xp.html Detailed Description]
 +
 
 +
* [http://www.coberholzer.info/media/projects/os/reiser4xp/dokumentation.pdf Documentation for building the Reiser4 driver] (german)
 +
 
 +
* [https://www.hsr.ch/uploads/tx_icscrm/i_sa_ws05_glatz_hosang_kadlced_oberh.pdf short description] (german)
 +
 
 +
'''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: http://hidentity.org/hid/AT102574.gif
 +
[[Category:Ideas]]
 +
[[Category:ReactOS_Components]]

Latest revision as of 05:25, 28 December 2018

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: http://hidentity.org/hid/AT102574.gif