Fetching contributors…
Cannot retrieve contributors at this time
154 lines (118 sloc) 5.56 KB
2013-07-02 Rinat Ibragimov <>
* tag: v0.2.2
* doc: add man page
* doc: add documenting some internals of reiserfs-defrag
* rfsd: add configurable binary installation path. Use SBINDIR
cmake variable to specify it.
2012-12-15 Rinat Ibragimov <>
* tag: v0.2.1
* rfsd: fix sparse block handling in moveObjectsUp
* rfsd: tolerate duplicate entries in file list (by removing
* rfsd: rename binary `rfsd' to `reiserfs-defrag'
* rfsd: explicitly state license for code. GPLv3
* rfsd: update content of
2012-12-14 Rinat Ibragimov <>
* tag: v0.2
* rfsd: this will be version v0.2
* rfsd: add prepocessor checking of endiannes. Prevent building on
everything except little-endian.
* rfsd: move specified files to beginning of partition. File names
should be supplied in external file
* rfsd: allow changing of block cache max size via command line
* rfsd: fix minor bug in recursivelyGetBlocksOfObject which could
lead to incomplete defragmentation of files larger than 30 MB
2012-12-02 Rinat Ibragimov <>
* rfsd: add method that guesses key type and uses it for key
comparison. The same method used in reiserfs driver itself.
* rfsd: use unions in key_t struct to extract key parts.
2012-11-26 Rinat Ibragimov <>
* rfsd: add additional checks for all tree nodes read.
2012-11-24 Rinat Ibragimov <>
* rfsd: add superblock sanity checks
2012-11-19 Rinat Ibragimov <>
* rfsd: add command-line switch controlling data journaling. Specify
--journal-data to enable journaling not only meta-data but data also.
2012-11-15 Rinat Ibragimov <>
* rfsd: use own assertion macroses (assert{1,2}) both in release
and in debug versions
* rfsd: stop operation if read or write error occured
* rfsd: print read/write positions with timestamps (disabled by default)
* rfsd: fix recursive caching bug
* rfsd: combine read/writes for unformatted blocks thus improving
speed a bit
2012-11-09 Rinat Ibragimov <>
* rfsd: fix progress bar bug on extremely narrow terminals
* Version 0.1
* ChangeLog: use change log
* rfsd: notion of allocation groups. Each of them maintains list of
free extents in sorted order to speedup and amend free blocks
allocation. Can have size of 128 MiB, 256 MiB or 512 MiB. Now 128.
* rfsd: continuous extent allocator. Either allocated continuous
extent of asked size or fails.
* rfsd: introduced squeezing of AG. All data blocks in AG moved to its
beginning therefore creating large free extent at its end. Maintains
data block order.
* rfsd: introduced sweeping of AG. Which is effectively first part of
squeezing. Moves blocks away from allocation group.
* rfsd: add "forbidden AG" parameter to allocateFreeExtent
* rfsd: avoid including leaf containing first indirect item of file
to its ideal block order
* rfsd: implement incremental defrag. Large file will be processed
by piecemeal.
* rfsd: implement nice progress bars and use them.
* rfsd: estimate amount of work beforehand.
* rfsd: try to free some continuous space in case of allocation
failure. AG selected by score which depend both on its free space
fragmentation and some random value. Thus deadlocks avoided.
* rfsd: use progress bars in treeThroughDefrag
* rfsd: basic command-line processing
* rfsd: print usage on --help
* rfsd: introduced 'none' type defragmentation that do nothing
* misc: drop tuxonizer.
* rfsd: dump errors to stdout instead of stderr to ease logging
* rfsd: use several passes for incremental defrag. Exit early if
no files need defragmentation
* rfsd: allow user to interrupt process by gracefully ending current
* rfsd: added optional squeeze stage with tunable threshold
* rfsd: fix bug in handling filesystems of sizes not multiple of
AG size. Stricter checks of movemap inconsistency.
2012-10-07 Rinat Ibragimov <>
* rfsd: using leaf index to speedup lookup leaf node by block indices
it refers.
* rfsd: change move block functions to traverse subset of tree
* rfsd: split up huge move job into smaller chunks
* rfsd: implement treeThroughDefrag -- iterative version of previous
* rfsd: fix bug with sparse files handling which caused rfsd stop
in panic.
2012-09-16 Rinat Ibragimov <>
* rfsd: merge transaction into larger one, significantly improves
2012-09-14 Rinat Ibragimov <>
* rfsd: journaling support. All writes to filesystem from now performed
by transactions.
* rfsd: switch from fsync to fdatasync as it's slighly faster.
2012-09-12 Rinat Ibragimov <>
* rfsd: basic read cache. Block that read remains in memory for some
time in hope that they can be read again in nearby future. Add cache
2012-09-07 Rinat Ibragimov <>
* rfsd: working defragmentation, but far away from optimal. Creates
'ideal' data layout and tries to move all blocks that can be moved
to their final position.
2012-09-04 Rinat Ibragimov <>
* rfsd: make code actually move blocks with corresponding changes to
metadata structures
* misc/moveback: moves all blocks to beginning of file system
* misc/shuffler: randomly shuffles blocks
* misc/tuxonizer: imprint Tux logo on filesystem
2012-08-22 Rinat Ibragimov <>
* rfsd: first line of code