From: Hans Reiser This patch involves reiser4 into compiling (if it is configured) Signed-off-by: Andrew Morton --- 25-akpm/fs/Kconfig | 2 25-akpm/fs/Kconfig.reiser4 | 162 +++++++++++++++++++++++++++++++++++++++++++++ 25-akpm/fs/Makefile | 1 3 files changed, 165 insertions(+) diff -puN fs/Kconfig~reiser4-include-reiser4 fs/Kconfig --- 25/fs/Kconfig~reiser4-include-reiser4 Wed Aug 18 16:42:47 2004 +++ 25-akpm/fs/Kconfig Wed Aug 18 16:42:47 2004 @@ -160,6 +160,8 @@ config FS_MBCACHE default y if EXT2_FS=y || EXT3_FS=y default m if EXT2_FS=m || EXT3_FS=m +source "fs/Kconfig.reiser4" + config REISERFS_FS tristate "Reiserfs support" help diff -puN /dev/null fs/Kconfig.reiser4 --- /dev/null Thu Apr 11 07:25:15 2002 +++ 25-akpm/fs/Kconfig.reiser4 Wed Aug 18 16:42:47 2004 @@ -0,0 +1,162 @@ +config REISER4_FS + tristate "Reiser4 (EXPERIMENTAL very fast general purpose filesystem)" + depends on EXPERIMENTAL + default y + ---help--- + Reiser4 is more than twice as fast for both reads and writes as + ReiserFS V3, and is the fastest Linux filesystem, by a lot, + for typical IO intensive workloads. [It is slow at fsync + intensive workloads as it is not yet optimized for fsync + (sponsors are welcome for that work), and it is instead + optimized for atomicity, see below.] Benchmarks that define + "a lot" are at http://www.namesys.com/benchmarks.html. + + It is the storage layer of what will become a general purpose naming + system --- like what Microsoft wants WinFS to be except designed with a + clean new semantic layer rather than being SQL based like WinFS. + For details read http://www.namesys.com/whitepaper.html + + It performs all filesystem operations as atomic transactions, which + means that it either performs a write, or it does not, and in the + event of a crash it does not partially perform it or corrupt it. + Many applications that currently use fsync don't need to if they use + reiser4, and that means a lot for performance. An API for performing + multiple file system operations as one high performance atomic write + is almost finished. + + It stores files in dancing trees, which are like balanced trees but + faster. It packs small files together so that they share blocks + without wasting space. This means you can use it to store really + small files. It also means that it saves you disk space. It avoids + hassling you with anachronisms like having a maximum number of + inodes, and wasting space if you use less than that number. + + It can handle really large directories, because its search + algorithms are logarithmic with size not linear. With Reiser4 you + should use subdirectories because they help YOU, not because they + help your filesystem's performance, or because your filesystem won't + be able to shrink a directory once you have let it grow. For squid + and similar applications, everything in one directory should perform + better. + + It has a plugin-based infrastructure, which means that you can easily + invent new kinds of files, and so can other people, so it will evolve + rapidly. + + We will be adding a variety of security features to it that DARPA has + funded us to write. + + "reiser4" is a distinct filesystem mount type from "reiserfs" (V3), + which means that "reiserfs" filesystems will be unaffected by any + reiser4 bugs. + + ReiserFS V3 is the stablest Linux filesystem, and V4 is the fastest. + + In regards to claims by ext2 that they are the de facto + standard Linux filesystem, the most polite thing to say is that + many persons disagree, and it is interesting that those persons + seem to include the distros that are growing in market share. + See http://www.namesys.com/benchmarks.html for why many disagree. + + If you'd like to upgrade from reiserfs to reiser4, use tar to a + temporary disk, maybe using NFS/ssh/SFS to get to that disk, or ask + your favorite distro to sponsor writing a conversion program. + + Sponsored by the Defensed Advanced Research Projects Agency (DARPA) + of the United States Government. DARPA does not endorse this + project, it merely sponsors it. + See http://www.darpa.mil/ato/programs/chats.htm + + If you would like to learn about our plans to add + military grade security to reiser4, please read + http://www.namesys.com/blackbox_security.html. + + To learn more about reiser4, go to http://www.namesys.com + +config REISER4_LARGE_KEY + bool "Use larger keys on reiser4 tree" + depends on REISER4_FS + default y + ---help--- + Make keys larger and use additional bits to order bodies of files within + a directory in the order of their names, which is what you want + normally. If you turn this off, file bodies will be ordered by creation + time, which is not optimal for most users. + + Warning: flipping this option makes your file system binary + incompatible. + +config REISER4_CHECK + bool "Enable reiser4 debug options" + depends on REISER4_FS + ---help--- + Don't use this unless you are a developer debugging reiser4. If + using a kernel made by a distro that thinks they are our competitor + (sigh) rather than made by Linus, always check each release to make + sure they have not turned this on to make us look slow as was done + once in the past. This checks everything imaginable while reiser4 + runs. + + When adding features to reiser4 you should set this, and then + extensively test the code, and then send to us and we will test it + again. Include a description of what you did to test it. All + reiser4 code must be tested, reviewed, and signed off on by two + persons before it will be accepted into a stable kernel by Hans. + +config REISER4_DEBUG + bool "Assertions" + depends on REISER4_CHECK && REISER4_FS!=m + help + Turns on assertions checks. Eats a lot of CPU. + +config REISER4_DEBUG_MODIFY + bool "Dirtying" + depends on REISER4_CHECK + help + Check that node is marked dirty each time it's modified. This is done + through maintaining checksum of node content. CPU hog. + +config REISER4_DEBUG_MEMCPY + bool "Memory copying" + depends on REISER4_CHECK + help + Use special non-inlined versions on memcpy, memset, and memmove in + reiser4 to estimate amount of CPU time spent in data copying. + +config REISER4_DEBUG_NODE + bool "Node consistency" + depends on REISER4_CHECK + help + Run consistency checks on nodes in balanced tree. CPU hog. + +config REISER4_ZERO_NEW_NODE + bool "Node zeroing" + depends on REISER4_CHECK + help + Zero new node before use. + +config REISER4_TRACE + bool "Tracing" + depends on REISER4_CHECK + help + Turn on tracing facility. This enables trace_flags mount option. + +config REISER4_EVENT_LOG + bool "Log events" + depends on REISER4_CHECK + help + Log events into user supplied file. This enables trace_file mount option. + +config REISER4_STATS + bool "Statistics" + depends on REISER4_CHECK + help + Turn on statistics collection. This increases size of in-memory super + block considerably. + +config REISER4_DEBUG_OUTPUT + bool "Printing" + depends on REISER4_CHECK + help + Enable compilation of functions that print internal kernel data + structures in human readable form. Useful for debugging. diff -puN fs/Makefile~reiser4-include-reiser4 fs/Makefile --- 25/fs/Makefile~reiser4-include-reiser4 Wed Aug 18 16:42:47 2004 +++ 25-akpm/fs/Makefile Wed Aug 18 16:42:47 2004 @@ -46,6 +46,7 @@ obj-$(CONFIG_PROFILING) += dcookies.o # Do not add any filesystems before this line obj-$(CONFIG_REISERFS_FS) += reiserfs/ +obj-$(CONFIG_REISER4_FS) += reiser4/ obj-$(CONFIG_EXT3_FS) += ext3/ # Before ext2 so root fs can be ext3 obj-$(CONFIG_JBD) += jbd/ obj-$(CONFIG_EXT2_FS) += ext2/ _