This file lists noteworthy changes in SaunaFS.

* SaunaFS (5.1.2) (2025-08-21)
 - Revert "Write several blocks per hdd write job" from 5.1.0

* SaunaFS (5.1.1) (2025-08-21)
 - fix(uRaft): Handle missing URAFT_ELECTOR_MODE (#537)

* SaunaFS (5.1.0) (2025-08-14)
 - build: Fix master not building on gcc12 when prometheus missing (#401)
 - build(uraft): Update boost functions to work with boost 1.87 (#310)
 - build: Fix Windows build after refactor of fsconnect (#486)
 - feat: Add a dedicated jobPool for replications (#491)
 - feat(common): Add initial signal-slots support (#507)
 - feat(cs): Release old iobuffers (#519)
 - feat(cs): Write several blocks per hdd write job (#504)
 - fix(cgi): Fix multi chunkservers table (#375)
 - fix(charts): Fix wrong range value for CSV (#520)
 - fix(chunkserver): Use malloc_trim to reduce RAM usage (#481)
 - fix: Fix write algorithm in delayed init mode (#496)
 - fix(ganesha): Fix lock type conversion in setlk (#517)
 - fix(ganesha): Prevent segfault in lock operations (#505)
 - fix(mds): Add init function to metadata backends (#475)
 - fix(mount): Fix path by inode consistency (#503)
 - fix(mount): Fix readahead under high latency (#514)
 - fix(mount): Redirect info messages to stdout (#493)
 - fix(protocol): Fix some protocol inconsistencies (#477)
 - fix(tools): Remove warning regarding -l option in setgoal (#498)
 - fix(wireshark): Fix wireshark plugin build (#350)

* SaunaFS (5.0.3) (2025-08-21)
 - fix(uRaft): Handle missing URAFT_ELECTOR_MODE (#537)

* SaunaFS (5.0.2) (2025-07-15)
 - fix(chunkserver): Fallback to old registration if needed (#489)

* SaunaFS (5.0.1) (2025-07-12)
 - fix: Check master version for write algorithm (#488)

* SaunaFS (5.0.0) (2025-07-10)
 - feat(cmake): Make FDB optional (#478)
 - feat(mds): Separate changelogs from metadata backend (#471)
 - feat(mds,chunkserver): Add CLUSTER_ID config var (#452)
 - feat!(mds,chunkserver): Send Master info at registration
 - feat: Write more blocks at once when replicating (#469)
 - feat(mds): Select correct FDB version at install (#470)
 - feat: Add new kv and fdb libs (#459)
 - fix(fdb): Improve exception handling in FDBContext
 - feat(master): Make MetadataDumper extensible (#467)
 - feat(master): Give own RunTab to init metadata backend (#466)
 - feat: Add initial scripts for FoundationDB (#332)
 - feat: Avoid calculate CRC twice for replications (#461)
 - fix: Fix CS restart while replicating (#460)
 - fix(main): Fix test starting master when it's not running. (#464)
 - feat(chunkserver): Reduce strings RAM usage (#454)
 - fix: Fix master reload crash (#450)
 - fix: Update documentation for uraft config file (#446)
 - feat: Readcache buffers pool (#437)
 - fix: Modify maxReadAheadRequests default value (#410)
 - feat(chunkserver): Allow reading always bigger blocks (#447)
 - feat!(master): Avoid overlapping scheduled deletions (#445)
 - feat: Show trash and reserved on path by inode
 - fix: Add check for safer path by inode on master
 - feat(chunkserver): Implement listeners for JobPool (#444)
 - feat: Speedup replication/rebalance (#436)
 - feat: Ask for bigger batches when replicating
 - feat: Make replication buffer thread_local
 - feat: Avoid saving space for unneeded parts
 - feat: Balance replication sources across all CSs
 - fix(chunkserver): Fix NetworkWorkerThread names (#442)
 - feat(chunkserver): Use eventfd in JobPool (#439)
 - feat(chunkserver): Make struct masterconn a class (#427)
 - feat(chunkserver): Create JobPool before connections
 - feat(chunkserver): Decentralize MasterConn stats
 - feat(chunkserver): Add own options to MasterConn
 - feat(chunkserver): Use shared_ptr for gJobPool
 - feat(chunkserver): Make struct masterconn a class
 - fix(uRaft): Prevent electors from starting MDS (#423)
 - feat!: Remove sfstools symbolic links commands (#435)
 - fix(master): Correct default listen host and port (#438)
 - feat(tools)!: Remove default timeout from some saunafs operations (#433)
 - feat(tools)!: Remove deprecated commands from saunafs (#385)
 - fix(master): Remove unavailable log spam (#424)
 - feat!: Remove deprecated sfscachefiles option (#420)
 - fix(mount): Make readdir safe on session close (#429)
 - fix: Remove deprecated master option MATOCU (#409)
 - fix: Refactor saunafs-admin command (#417)
 - feat(all): Unify inode numbers type (#341)
 - fix(mount): Use inode_t in StatfsCacheKey
 - fix(master): Use inode_t in GoalStatistics
 - fix(quotas): Use inode_t in QuotaOwner::ownerId
 - fix(master): Add GETINODE to restore changelogs
 - fix(tools): Fix print_number calls in tools
 - fix(mds): Fix build after rebase
 - fix(mds): Fix metadata save/load to file
 - feat(all): Add the option ENABLE_INODE64 to cmake
 - feat(all): Reduce magic numbers
 - feat(all): Add the getINode type aware function
 - feat(all): Increase type safety of get32bit
 - feat(all): Add the putINode function
 - feat(all): Add the PRIiNode macro
 - feat(ganesha): Improve wire_to_host for 64 bits inodes
 - feat(all): Unify inode numbers type
 - feat: Enhance statfs cache handling (#430)
 - feat: Update migration script and add documentation (#428)
 - fix(restore.cc): Correctly convert int to uint8_t in changelog restore (#425)
 - feat(admin): Add mount info list command
 - feat(cgi): Display mount information in monitoring
 - fix(chunkserver): Make masterconn a smart pointer
 - fix(chunkserver): Avoid direct mutex lock/unlock (#418)
 - feat(mount): New chunk-based write algorithm (#158)
 - fix: Corrected file descriptor lock release
 - fix: Relax constraints in malloc tests (#411)
 - feat(mount): Add reconnection related options (#400)
 - perf: Skip metadata dump during chunk registration (#406)
 - fix(chunkserver): Improve main network thread term (#404)
 - fix: Extend reach of collectGarbage
 - fix: Make ReadCache::Entry::timer atomic
 - fix: Fix possible unnecessary wait
 - fix: Substitute dangerous massert
 - fix: Fix rcvpPtr being null
 - fix(chunkserver): Fix locking and helgrind warns (#399)
 - fix(chunkserver): Enforce lock order
 - fix(chunkserver): Fix chunk locked for long time
 - fix(chunkserver): Protect status in OutputBuffer (#398)
 - fix(chunkserver): Improve write buffers alignment (#396)
 - fix(main)!: Change test output from stderr to stdout (#386)
 - feat(master)!: Remove deprecated functions (#388)
 - fix(chunkserver): Wait for GC before terminate (#390)
 - fix: Avoid unprotected access to chunk members
 - fix: Protect chunks structure in hddGetTotalSpace
 - fix: Fix race condition in max_wait_time
 - fix: Fix test_optimizing_partial_stripes
 - fix(tools): Fix saunafs command folder resolution (#376)
 - build: Set GIT_* definitions to N/A if no git info generated (#374)
 - fix(chunkserver): Release chunk on failing read
 - fix(chunkserver): Improve suppression for clang
 - fix(chunkserver): Remove unlock before notify
 - fix(clang): Fix error when prometheus is disabled (#368)
 - fix(main): Remove valgrind warning with clang (#365)
 - fix!: Fix long parallel writings
 - fix: chunkserver-common linking errors in GCC-13 (#358)
 - fix(cmake): Fix typo in jemalloc configuration (#356)

 * SaunaFS (4.11.0) (2025-06-06)
 - feat: Add migration script and documentation on migrations
        See saunafs-migrations.7 for more info
 - Add log showing an error that 5.0.0 changelogs are unsupported

* SaunaFS (4.10.0) (2025-05-28)
 - fix(mount): Remove unnecessary waits on reads (#402)
 - fix: Fix client recover when master disconnects (#383)
 - fix(uraft): Remove floating IP on sfsmaster kill (#391)
 - fix: Fix replicate related chunkserver locking (#381)
 - fix(master): Large trash causing crash (#379)
 - fix: Corrected stat behavior when using quotas
 - fix: Correct quota per directory calculation
 - fix: Fix optimizing partial stripes test (#377)
 - feat: Disable creation of folders for full disk (#346)

* SaunaFS (4.9.0) (2025-05-01)
 - fix(chunkserver): Fix chunkserver locking (#367)
 - fix: Fix truncate tests (#372)
 - fix: Fix masterconn_canexit() (#355)
 - docs: Define experimental features (#361)
 - fix(mount): Fix client to master response delay (#348)
 - fix(chunkserver): Fix long rebalancing/replicate (#351)
 - feat(mount): Reduce write memory usage (#343)
 - feat: Log error_code related message (#339)
 - feat: Add deprecation warning for XOR
 - docs: Fix incorrect documentation
 - feat: Add deprecation warnings for old changelog entries
 - feat: Add deprecation warning for sfstools script
 - feat: Add warning for deprecated sfscachemode
 - feat(tools): Add warnings for deprecated set/get commands
 - feat: Add deprecation warnings and documentation for -l option
 - fix: Add break to saunafs infinite loop on Windows (#342)
 - feat: Use inode quota in volume size (#336)
 - fix: Fix SQLite issue (#337)

 * SaunaFS (4.8.1) (2025-03-27)
 - fix: Show same stats as CGI in statfs call

 * SaunaFS (4.8.0) (2025-03-04)
 - feat(uraft): Introduce floating IP manager for HA (#301)
 - feat: Use quota in volume size option (#295)
 - feat: Statfs cache
 - feat: Use quota in volume size option
 - fix(build): Fix vcpkg presets for Windows (#305)
 - build: Add vcpkg support (#302)
 - feat(mds,common): Start decoupling metadata backend (#296)
 - perf(uraft): Reduce CPU usage on non-leader nodes (#297)
 - feat(mount): add log on OS notification area (#280)
 - fix: Fixes on sfsappendchunks + test (#293)
 - feat: Improve metadata speed for big directories (#272)
 - feat(chunkserver): Reduce strings RAM usage (#290)
 - feat(mount): Add client limit glibc malloc arenas (#274)
 - feat(mount): Add ignore utimens data for Windows (#283)
 - fix: Fix CLang compilation (#286)
 - build: Move cpack to another script (#285)
 - feat: Speedup unlink operation in big dirs (#268)
 - feat: Enlarge chunk hash table
 - feat: Reduce unlink overhead
 - feat: Reuse the buffers when storing metadata
 - feat: Make MD benchmark to show time per slice
 - fix(slogger): Set log level as `maybe_unused` (#278)
 - fix(slogger): Use level to set syslog as well
 - feat(slogger): Add setting up logging using env/config variables
 - feat(mount): Enable status updater thread option (#276)
 - Build saunafs using clang (#270)
 - fix: Addressing minor issues detected by Clang
 - fix: Fix functions detection in CMake (#267)
 - fix: Remove array-bounds and stringop-overflow warnings
 - fix: Fix functions detection in CMake
 - feat(mount): Add path by inode hidden file (#265)
 - feat: Reduce malloc virtual memory usage (#266)
 - fix(mount): Fix low level fuse options in help (#254)
 - fix(build): suppress warnings in manpage generation (#264)
 - fix: metarestore logging (#255)
 - fix(mount): Fix helgrind issues on `fs_nop_thread`
 - fix(mount): Fix consistent read cache release
 - Fix readcache memory release (#241)
 - feat(mount): Add option for open files on Windows (#230)

 * SaunaFS (4.7.0) (2024-12-18)
 - fix(mount): Remove helgrind warning
 - fix(mount): Reduce data race conditions in mount
 - fix(chunkserver): Replace pthread_mutex_t by std in jobpool (#252)
 - chore: Change how PACKAGE_VERSION string is build (#232)
 - fix(pcqueue): Remove Helgrind warnings (#250)
 - docs: Fix wrong default value in sfschunkserver.cfg (#246)
 - feat(chunkserver): Stat chunks at scan optionally (#245)
 - doc(master): Add man docs for caseinsensitive (#243)
 - feat: Improve Judy related compiler directives
 - fix: Unhandled exception in plugin_manager.cc
 - feat(mount): Add ignoreflush to tweaks variables (#228)
 - fix(chunkserver): Use option HDD_ADVISE_NO_CACHE (#227)
 - feat(chunkserver): Use aligned memory for writes (#225)
 - fix(tools): infinite recursion in sfstools.sh
 - feat(master): Add case insensitiveness on system (#188)

 * SaunaFS (4.6.0) (2024-10-23)
 - build: Add allowing to pass suffix to version
 - feat: Improve big sessions create/open speed
 - fix(mount): Enhance read cache handling and add tests (#202)
 - fix: Clarify error offset in file-validate (#218)
 - feat: Configure judy use via directives (#219)
 - docs(sfsgoals.cfg): Give more practical examples (#162)
 - feat(common): Make poll timeout configurable (#211)
 - feat: Improve idhash in client
 - feat: Improve acquired files in client
 - perf: Add benchmark test for many open files
 - feat(master): Improve openedfiles per session
 - feat(uraft): Add mechanism to recover floating IP (#214)
 - feat(chunkserver): Make configurable masterconn workers (#212)
 - fix(chunkserver): Avoid possible undefined behavior
 - feat(master): Add option to toggle data parts priority (#208)
 - fix(cgi): Change key to re-order list of disks (#177)
 - fix(chunkserver): Refactor partially csserventry
 - fix(mount): Fix tcptoread-write error message
 - feat(chunkserver): Increase NR_OF_NETWORK_WORKERS
 - feat(chunkserver): Improve network workers params
 - feat(mount): Set default cache timeout to 1000
 - fix(mount): Fix many parallel reads issue
 - fix(mount): Fix client race conditions
 - feat(chunkserver): Get chunk to test from manager (#174)
 - feat(tests): Add RPC service recovery function (#189)

 * SaunaFS (4.5.1) (2024-09-16)
 - Fix critical issue with uraft assigning floating IP address to all nodes.
   Note that this fix reverts the previous fix for lost IP addresses after
   network restart.
 - test: Improve Ganesha test for master failover (#187)
 - feat(tests): Add RPC service recovery function (#189)


 * SaunaFS (4.5.0) (2024-09-05)
 - fix(mount): Set default cacheExpirationTime to 0 (#180)
 - feat(mount): Add readcachemaxsize option (#145)
 - feat(master): Add empty reserved files option (#176)
 - fix(mount): Fix random case option parsing (#135)
 - feat(chunkserver): Add IDiskManager::getDiskForGC (#169)
 - test: Improve `stop_ganesha()` function (#168)
 - fix(ci): Modify timeout from env (#165)
 - ci: Fix tests behavior (#172)
 - fix(uraft): Fix missing floating ip address
 - fix(mount): Fix create time (Windows) (#167)
 - feat(admin): Add list-disk-groups command (#155)
 - ci: Abort previous concurrent tests
 - ci: Update de base docker image on build
 - fix(tests): Fix typo in setup-machine script
 - fix(tests): Amend upgrade tests (#146)
 - fix: Update services to wait for network (#151)
 - fix: Update uraft service to restart on failure (#153)
 - fix: Release compilation on GCC 14 (#148)
 - feat(chunkserver): Extend IDiskManager interface (#143)
 - test: Verify master loading legacy metadata
 - feat: Load legacy metadata file
 - fix: Allow legacy sessions download
 - fix: Allow legacy metadata download

 * SaunaFS (4.4.0) (2024-07-31)
 - ci(.github): Add check for Conventional Commits (#131)
 - feat(metrics): Add initial prometheus support (#98)
 - fix(deploy): Allow to pass a file as an argument
 - test: Remove Ganesha test for master failover
 - tests: Add Ganesha test for master failover (#138)
 - feat(chunkserver): Extend getDiskForNewChunk (#137)
 - fix(build): Fix cmake syntax warning (#134)
 - feat(tests): Allow custom sfshdd content in tests (#132)
 - ci: Add prometheus dependencies
 - feat(master): Allow localhost connections to master
 - fix(mount): Fix help display format (#125)
 - feat(chunkserver): Relocate hddDisksReinit (#130)
 - feat(common): Improve the hddSizeParse function (#129)
 - test: Add function to stop hanging ganesha daemon (#127)
 - build(deps): Bump requests from 2.31.0 to 2.32.2 in /tests/dispatcher/client (#149)
 - ci: Delegate tests to a separate job
 - tidy(INSTALL.md): Remove links

 * SaunaFS (4.3.0) (2024-07-12)
 - cgi: Add png version of logo (#124)
 - tidy(tests): Disable test_chunk_rebalancing (#123)
 - fuse: Fix sfscacheperinodepercentage help (#122)
 - feat(chunkserver): Expose gDiskManager to plugins (#121)
 - fix(errors): Add explicit std string include (#119)
 - feat(chunkserver): Extend the PluginManager
 - feat(chunkserver): Add DiskManager interface

 * SaunaFS (4.2.0) (2024-06-19)
 - (all) Fix slogger dependencies compilation
 - (common) Split off slogger from common
 - (common) Split off error code from common
 - (master) Improve auction optimization
 - (master) Cache auction optimizer input/output
 - (master) Apply result of auction optimization
 - (chunkserver) Improve plugin related logs
 - (mount) Fix master connection checking
 - (mount) Fix mount when master is down
 - (mount) Apply fixes to DirEntryCache
 - (mount) Label mount threads for better debugging
 - (admin) Add missing option to master default config
 - (protocol): Add protocol documentation
 - (tests) Bump OS version to Ubuntu 24.04
 - (tests) Update GaneshaTests suite
 - (tests) Fix race condition in metadata_dump_period_seconds
 - (tests) Add ss and pv dependencies
 - (tests) Fix test_cgi_validate_html test
 - (tests) Clean up space used by the tests
 - (tests) Fix LongSystemTests related to building
 - (tests) Migrate XOR tests to erasure coding
 - (tests) Improve DirEntryCache tests coverage
 - (tests) Remove Ganesha unneeded dependencies
 - (tests) Add Ganesha test for validating file corruption
 - (tests) Enable nfs v4.1 in Ganesha multi export test
 - (ci) Create NFS-Ganesha config's directory
 - (ci) Fix nfs-ganesha image build for latest OS

 * SaunaFS (4.1.1) (2024-05-22)
 - (docs) Add missing options in sfsmount.1

 * SaunaFS (4.1.0) (2024-05-09)
 - (master) Improve master startup time by allowing parallel metadata loading
 - (mount) Add `sfsdirectio` mount option
   Previously you had to edit .saunafs_tweaks file.
 - (mount) Fix undefined behavior in client
   Could cause a deadlock when reconnecting after a session was lost.
 - (mount) Fix wrong GID being shown in .oplog
 - (mount) Improve DirEntryCache behaviour by caching getattr/lookup operations
 - (admin) Add `--help option` in saunafs-admin
 - (admin) Add `--defaults` option for `dump-config` in saunafs-admin
 - (cgi) Update saunafs-cgi.
 - (all) Add support for Ubuntu 24.04
 - (all) Fix compilation issues on GCC 13
 - (all) Various bug fixes, especially regarding tests
 - (windows) Support compiling common and client library
 - (windows) Improve behavior for Windows client

 * SaunaFS (4.0.1) (2024-03-01)
 - (docs) Fix README.md and CONTRIBUTING.md links.

 * SaunaFS (4.0.0) (2024-02-28)
 - (all) Enable C++23
 - (all) Rebranding to SaunaFS
 - (all) XOR goal type deprecated (will be removed in a future release)
 - (all) Tape server support deprecated (will be removed next release)
 - (all) Add dependency on libyaml-cpp
 - (common) Create example pam.d file on build/install
 - (all) Remove dependency on fuse2
 - (admin) Allow dumping configuration that is explicitly set
 - (mount) Remove FUSE2 client
   sfsmount is the only way to mount now and it replaces the old mfsmount3,
   mfsmount on the other hand has not been replaced but removed since we do not
   support FUSE2 anymore.
 - (mount) Add a multi-threaded readahead to improve single-stream reading
 - (mount) Add readworkers and maxreadaheadrequests command line arguments
 - (chunkserver) Deprecate old chunk formats (mfs and liz) and add the new SPLIT
   format
 - (chunkserver) Allow to store metadata and data chunk parts in separate
   directories
 - (chunkserver) Modify sfshdd.cfg format to allow SPLIT format
 - (chunkserver) Add plugin architecture for Disk implementations
 - (chunkserver) Refactor long files to better distribute responsibilities
 - (chunkserver) Add object pool to reuse OutputBuffers in read operations
 - (chunkserver) Add configuration option to disable CRC checking during read
 - (chunkserver) Remove legacy replications
 - (nfs-ganesha) Update nfs-ganesha plugin to support nfs-ganesha v4.3
 - (nfs-ganesha) Enable NFS ACL support at compilation time
 - (nfs-ganesha) Refactor nfs-ganesha plugin
 - (nfs-ganesha) Add Doxygen documentation
 - (nfs-ganesha) Create GaneshaTests suite (fio, performance, copy file)

 * Lizardfs (3.13.0-rc1) (2018-06-28)
 - (all) uRaft HA
 - (all) fixes to EC handling
 - (all) nfs-ganesha plugin changed to use only C code
 - (mount) reduced number of secondary groups retrievals (better performance)
 - (mount) add fuse3 client (better performance, writeback cache)
 - (all) many fixes

 * Lizardfs (3.12.0-rc1) (2017-11-22)
 - (all) C API
 - (all) nfs-ganesha plugin
 - (all) RichACL support (which includes NFSv4)
 - (all) OSX ACL support
 - (master, mount) file lock fixes
 - (mount) client readahead enabled by default
 - (mount) AVX2 extensions support for erasure code goals
 - (chunkserver) more flexible options
 - (all) many fixes

 * Lizardfs (3.11.3) (2017-07-13)
 - (master) fix issues with reporting defective files
 - (mount) fix request size in read cache for empty results

 * Lizardfs (3.11.0) (2017-05-09)
 - (master) improve ACL implementation
 - (master) add option to avoid same-ip chunkserver replication
 - (master) add minimal goal configuration option
 - (master) reimplement directory entry cache for faster lookups
 - (master) add whole-path lookups
 - (master, chunkserver) add chunkserver load awareness
 - (mount) add readahead to improve sequential read performance
 - (mount) add secondary groups support
 - (tools) add correct-only flag to filerepair
 - (tools) add -s and -i options to snapshot command
 - (tools) add recursive remove operations (for removing large directories and snapshots)
 - (tools) add tool for stopping execution of tasks (snapshot, recursive remove, etc.)
 - (all) change to semantic versioning system
 - (all) many fixes

 * Lizardfs (3.10.4) (2016-10-07)
 - (master) task manager performance improvements
 - (master) trash fixes

 * Lizardfs (3.10.2) (2016-08-30)
 - (master) redesign in-memory representation of file system objects - at least 30% reduction in RAM usage
 - (master) name storage - a possibility to keep all file names in BerkeleyDB, thus saving even more RAM
 - (master) redesign of trash - increased performance, reduced RAM usage and CPU pressure
 - (master) huge boost of responsiveness - lengthy operations split into asynchronous bits
 - (master) OPERATIONS_DELAY* config entries, which allow postponing metadata operations on restart/disconnect
 - (master) fix improper handling of endangered chunks
 - (chunkserver) memory optimizations - at least 60% reduction in RAM usage
 - (chunkserver) introduce smart descriptor management
 - (tools) brand new `lizardfs` command, a unified replacement for mfs* tools with prompt and bash completion
 - (all) various fixes and community requests

 * Lizardfs (3.10.0-rc) (2016-03-14)
  - (all) Added erasure code goals
  - (all) Added per directory quotas
  - (all) Improved interaction with legacy version (chunkservers, mounts)
  - (all) Ports for OSX and FreeBSD
  - (all) Many fixes

 * Lizardfs (3.9.4) (2015-12-02)
  - (master) Removed master server overload on restarting chunkservers
  - (master) Improved global file locks engine
  - (chunkserver) Fixed leaking descriptors problem
  - (chunkserver) Improved mechanism of moving chunks to new directory layout
  - (chunkserver) Fixed issues related to scanning directories with new chunk format present
  - (mount) Removed hang in mount when chunkserver reported no valid copies of a file
  - (master) Changed handling of legacy (pre-3.9.2) chunkservers in new installations
  - (cgi) Added XOR replication to statistics
  - (all) Removed default linking to tcmalloc library due to performance drop

 * Lizardfs (3.9.2) (2015-10-23)

  - (all) Introduced XOR goal types
  - (all) Added file locks (flock & fcntl)
  - (all) Increased max number of files from 500 million to over 4 billion
  - (all) Introduced managing open file limits by PAM
  - (master) Improved consistency of applying changelogs by shadow masters
  - (master) Redesigned snapshot execution in master
  - (master) Redesigned chunk loop logic
  - (master) Removed hard coded connection limit
  - (master) Added option to limit chunk loop's CPU usage
  - (chunkserver) Added new network threads responsible for handling requests sent by chunkserver's clients
  - (chunkserver) Introduced new more efficient directory layout
  - (chunkserver) Added option to choose if fsync should be performed after each write for increased safety
  - (chunkserver) Removed hard coded connection limit
  - (chunkserver) Added replication network bandwidth limiting
  - (mount) Improved symlink cache and added configurable timeout value
  - (all) Minor bug fixes and improvements

 * Lizardfs (2.6.0) (2015-02-09)

  - (all) Added comments in all config files
  - (all) Improve messages printed by daemons when starting
  - (cgi) A new chunkserver's chart: number of chunk tests
  - (cgi) Fixed paths to static content
  - (cgi) New implementation of the CGI server; mfscgiserv is now deprecated.
  - (cgi) New table: 'Metadata Servers' in the 'Servers' tab
  - (chunkserver) Allowed starts with damaged disks
  - (chunkserver) A new option: HDD_ADVISE_NO_CACHE
  - (chunkserver) Improved handling of disk read errors
  - (chunkserver) Removed 'testing chunk: xxxxxx' log messages
  - (master) A new feature: disabling atime updates (globally)
  - (master) Added possibility to set priority on handling endangered chunks
  - (master) Fixed rotating changelogs and downloading files in shadow mode
  - (master) Fixed handling replication delay on chunkserver disconnection
  - (probe) New commands
  - (probe) Renamed to lizardfs-admin
  - (all) Minor bug fixes and improvements

 * Lizardfs (2.5.4) (2014-11-07)

  - (all) Boost is no longer required to build the source code of LizardFS or use the binary version
  - (all) Added tiering (aka 'custom goal') feature, which allows users to label chunkservers and to request chunks to be stored on specific groups of servers
  - (cgi) "Exports" tabs renamed to "Config", now it also shows goal definitions
  - (cgi) Added new tab "Chunks"
  - (probe) New command "chunks-health" makes it possible to get number of missing or endangered chunks
  - (master) Fixed reporting memory usage in CGI
  - (mount) Fixed caching contents of open directories
  - (mount) Add a .lizardfs_tweaks file
  - (all) Other minor fixes and improvements

 * Lizardfs (2.5.2) (2014-09-15)

  - (master, shadow) Metadata checksum mechanism, allowing to find and fix possible metadata inconsistencies between master and shadow
  - (mount, master) ACL cache in mount, reducing the load of the master server
  - (packaging) Support packaging for RedHat based systems
  - (master) Improved chunkserver deregistration mechanism in order to avoid temporary master unresponsiveness
  - (polonaise) Add filesystem API for developers allowing to use the filesystem without FUSE (and thus working also on Windows)
  - (all) Minor fixes and improvements

* LizardFS 2.5.0 (2014-07-15)

  - (master) High availability provided by shadow master servers
  - (mount, chunkserver) CRC algorithm replaced with a 3 times faster implementation
  - (mount, master) Support for quotas (for users and groups)
  - (mount, master) Support for posix access control lists (requires additional OS support)
  - (mount, master) Support for global I/O limiting (bandwidth limiting)
  - (mount) Support for per-mountpoint I/O limiting (bandwidth limiting)
  - (adm) New package lizardfs-adm with a lizardfs-probe command-line tool which can be used to query the installation for various parameters
  - (master) New mechanism of storing metadata backup files which improves performance of the hourly metadata dumps
  - (all) A comprehensive test suite added
  - (all) Multiple bugfixes

* LizardFS 1.6.28 (2013-10-16)

  - (all) compile with g++ by default
  - (deb) fix init scripts for debian packages
  - (all) fix build on Mac OS X
  - (cgi) introducing LizardFS logo

* MooseFS 1.6.27 (2012-08-09)

  - (mfsrestore) fixed bug - freeing filenames memory too early
  - (all) added initial support for extra attributes (xattr), which will be introduced in upcoming version 1.7
  - (master+metalogger) better change log synchronization (storage in master memory and sending expected version in metalogger - inspired by Davies Liu)
  - (master) acceptable difference of percent of hdd usage added to configuration (up to this version this parameter was constantly set to 0.01% - patch contributed by Davies Liu)
  - (master) added emergency store metadata to some other places on errors during standard hourly store (inspired by Davies Liu)
  - (cs) default space to be left (256MB) moved to config file (inspired by Davies Liu)
  - (cs) added extra limits in mfshdd.cfg (minimum space to be left, maximum space to be used)
  - (cs) fixed charts overflow issue (overflow in net transfer on about 575Mbps and hdd transfer on about 77MBps)
  - (metalogger) fixed issue: file variable was not clear after close (on rare occasions might cause segfault after disconnecting from master)
  - (all) cfg files moved form PREFIX/etc/ to PREFIX/etc/mfs/
  - (cgiserv) improved CGI handle (added support for custom http responses, such as "302 Found")
  - (master+cgi) showing disconnected chunkservers in "Servers" tab.
  - (deb+rpm) mfscgiserv moved from mfscgi to separate package, changes in init scripts
  - (mount) added option 'mfsdelayedinit' - for being run from fstab/init scripts
  - (master) optimized goal management in chunks
  - (master) fixed rare race-condition on clear/preserve cache during open in mount
  - (mount) fixed compiling problems on Mac OS X
  - (all) changed code to be more compatible with new gcc 4.7 (gcc 4.7 has too strong optimizations - it can generate unpredictable code)
  - (master) sustain session time could be defined in mfsmaster.cfg

* MooseFS 1.6.26 (2012-02-01)

  - (all) fixed signal handling in multithreaded modules
  - (master) added goal and trashtime limits to mfsexports.cfg
  - (metalogger) added simple check for downloaded metadata file (inspired by Davies Liu)
  - (master) better handle disk full (inspired by Davies Liu)
  - (master+metalogger) added keeping previous copies of metadata (inspired by Davies Liu)
  - (all) reload all settings on "reload" (SIGHUP)
  - (cs) disk scanning in background
  - (cs) fixed long termination issue (found by Davies Liu)
  - (master) fixed modify/open cache race

* MooseFS 1.6.25 (2011-12-30)

  - (metadump) fixed dumping big files (>2TiB)
  - (metarestore) fixed bug: nonexisting changelog file caused segv
  - (master+mount) added 'sugidclearmode' and 'mkdircopysgid' compatibility options
  - (master) improved chunk deletion algorithm (soft/hard limits per server)
  - (all) ready for new metadata file format, which will be introduced in upcomoing version 1.7
  - (all) ready for quota handling, which will be introduced in upcoming version 1.7

* MooseFS 1.6.24 (2011-12-06)

  - (master+mount) proxy in mount for mfstools (fixes problems with frequent connect to master)

* MooseFS 1.6.23 (2011-11-08)

  - (master+mount) removed directory cache (didn't increase performance as expected and caused many troubles)
  - (metarestore) added option (-i) - ignore some structure inconsistencies
  - (metarestore) added option (-b) - in case of errors save the best metadata file
  - (mount) more dynamic write cache management (changed condition ib<tb/5 to ib<3*fb where: ib - inode blocks in cache, tb - total blocks in cache, fb - free block in cache)
  - (master) save metadata file to alternative locations in case of error
  - (all) increased file length limit from 2TiB to 128PiB
  - (mfscgiserv) fixed directory traversal vulnerability
  - (mfscgiserv) added lockfile/pidfile and actions such as 'start', 'stop', 'restart' and 'test'.
  - (mfsmount) fixed parsing file with defaults

* MooseFS 1.6.22 (2011-05-09)

  - (mount) added resolving master hostname whenever connection has failed
  - (cs) removed getting attributes of every chunk during initialization - speeds up starting of chunkserver
  - (cs) changed calculating of total/used space. Superuser space now is subtracted from total space instead of adding it to used space
  - (master+mount) fixed directory cache.
  - (debian) rewritten init scripts to use mfscommon commands (start/stop/restart/reload) instead of start-stop-daemon (where stop caused killing all instances of daemon)
  - (debian) changed init scripts to bail out early if MFS*_ENABLE is not true (i.e. given daemon is not scripts-controlled)

* MooseFS 1.6.21 (2011-04-14)

  - (mount) added support of default config file (mfsmount.cfg)
  - (metarestore) fixed snapshot bug
  - (metarestore) improved tolerance for damaged changelog files
  - (master,mount) added full directory (with attributes) cache on client (mfsmount) side
  - (mount) added symlink cache on client (mfsmount) side
  - (mount) added hidden files '.oplog' and '.ophistory' with detailed info about current/historical operations performed by mfsmount
  - (master) added simple net topology support
  - (all) added -D_POSIX_PTHREAD_SEMANTICS to CFLAGS - needed by Solaris-like OSes
  - (cs) fixed detection of 'damaged disk' condition
  - (mount) fixed error caused segfaults during umount on certain conditions
  - (daemon) added 'test' command - checks if process is running and returns its PID

* MooseFS 1.6.20 (2011-01-14)

  - (cs) fixed "packet too big" issue during register to master (split big register packet with all chunks info into small packets)
  - (cs,metalogger,master) added minimum socket timeout (ten seconds)
  - (mount) accepting nop packets during write (for future use)

* MooseFS 1.6.19 (2010-12-15)

  - (debian) separated mfs-common and mfs-metalogger subpackages, added init scripts (contributed by Christopher Lewis)
  - (daemon) fixed return values (return non zero on error)
  - (cs) fixed chunk testing bug (any error during chunk opening caused assigning whole disk as damaged)
  - (cs,metalogger) added resolving master name when connection failed (patch contributed by Davies Liu)
  - (mount) added creating new session when previous is lost (inspired by Davies Liu)
  - (cs) added for unused chunks week delay before deletion (inspired by Davies Liu)
  - (cgi) added switching between name and IP in 'path' column in 'Disks' table (inspired by Davies Liu)
  - (master) do not update ctime when goal, trashtime or extra attributes are not changing

* MooseFS 1.6.18 (2010-11-08)

  - (metalogger) added sending metadata after metalogger startup
  - (master,metalogger) added sending two change logs together with metadata
  - (metarestore) improved merging change logs
  - (all) added a lot of assertions (mainly NULL pointers, and unsuccessful thread functions)
  - (all) fixed some minor bugs and potential race conditions (makes valgrind happy)
  - (cs) added ability to use read-only disks in "marked for removal" mode (to retrieve missing chunks from damaged disks)
  - (cs) added showing scanning progress during startup
  - (all/master) added releasing used resources at the end.
  - (all) changed some malloc/free allocations into mmap/munmap
  - (all) new error messages routines
  - (daemons) added proper handling SIGINT in "foreground" mode
  - (cgiserv) fixed small bug (malformed request could crash cgiserv)

* MooseFS 1.6.17 (2010-07-20)

  - (master,tools) added automatic data cache management
  - (master,tools) new flag "nodatacache"

* MooseFS 1.6.16 (2010-07-19)

  - (master) added clearing suid/sgid bits
  - (master) added check for "sticky" flag during rename and unlink operations
  - (master) fixed posix compatibility (removing empty directory on rename)
  - (master) fixed posix compatibility (proper changing ctime)
  - (master) fixed some constants (better support for larger systems - with millions of files and chunks)
  - (master) fixed error logging (logging is turning off when there are too many messages)
  - (all) fixed some OpenSolaris compile issues (mainly added -D__EXTENSIONS__ to compile flags)
  - (all) fixed OpenSolaris pthreads issue (errno doesn't work correctly without proper compiler flags)
  - (man) added mfscgiserv man page, added "BIND" options descriptions to man pages
  - (cs) fixed hdd stats (overflow on negative time difference)

* MooseFS 1.6.15 (2010-04-09)

  - (daemons) fixed "double free" error
  - (metarestore) fixed bugs in "REPAIR" and "SNAPSHOT" entries
  - (master) fixed bug in "snapshot" command ("mfsmakesnapshot dir dir/" caused master to hung-up)
  - (master) preserving atime and mtime during "snapshot" operation (makes "snapshot" to work more like "cp -Rp" than "cp -R")
  - (cs) omit "marked for removal" disks during chunk test loop

* MooseFS 1.6.14 (2010-03-19)

  - (all) improved messages
  - (cs) prevent from using localhost as a master IP address
  - (all) remove some BSDisms from code
  - (metalogger) added BIND_HOST option (as in mount and cs)

* MooseFS 1.6.13 (2010-02-08)

  - (master) fixed poll events bug
  - (autotools) added m4 module for posix threads detection
  - (master) added exporting "meta" to default mfsexports.cfg
  - (master,tools) removed "allowdatacache" flag (will be managed automatically in the future)
  - (master,cs) added support for not compressed PNG images in chart module (when build without zlib)

* MooseFS 1.6.12 (2010-01-25)

  - (mount) fixed locking in read module
  - (mount,cs) added ability to bind outgoing sockets to specific IP

* MooseFS 1.6.11 (2009-12-31)

  - (cs) removed dirent.d_type test
  - (cs) fixed some memory leaks
  - (mount) improved attribute cache

* MooseFS 1.6.10 (2009-12-09)

  - fixed errors introduced in 1.6.9
  - added 'reload' command to master
  - split chunk counters into 'all' and 'regular' (new approach to disks
   removal - since this version chunks on 'marked for removal' disks are not
   deleted)

* MooseFS 1.6.9 (2009-11-24)

  - updated manpages
  - added support for mlockall (prevent from swapping)
  - redesigned charts module
  - redesigned locking mechanizm (daemons)
  - added HDD I/O stats
  - removing unfinished jobs from queue on socket close
  - added 'cache file' flag

* MooseFS 1.6.8 (2009-10-26)

  - added options to set nice level and number of I/O retries in mfsmount

* MooseFS 1.6.7 (2009-10-05)

  - fixed error: damaged disk caused SIGSEGV in mfschunkserver

* MooseFS 1.6.6 (2009-10-02)

  - fixed errors introduced in 1.6.5
  - changed directory structure in CS (from 16 subfolders to 256 subfolders)

* MooseFS 1.6.5 (2009-09-23)

  - fixed some performance issues
  - added new module "mfsmetalogger"

* MooseFS 1.6.4 (2009-08-25)

  - rewrite mfs to use poll instead of select
  - fixed some errors in new write module
  - limit cache usage by inode in write module

* MooseFS 1.6.3 (2009-08-24)

  - reduced version increasing
  - increased open files limit in chunkserver
  - decreased time window in damage disk detection

* MooseFS 1.6.2 (2009-08-19)

  - fixed "race" in writedata module
  - increased session timeout in mfsmaster for new sessions

* MooseFS 1.6.1 (2009-08-14)

  - Added 'mapall' option to exports
  - Added flags 'noattrcache' and 'noentrycache'
  - Rewritten "Writedata" module in mfsmount
  - Added source (read) limit to replications
  - Prefer localhost during some operations (reduce network usage)

* MooseFS 1.6.0 (not released - only available in public repository)

 Common:
  - Removed duplicate source files.
  - Strip whitespace at the end of configuration file lines.

 Chunkserver:
  - Rewritten in multi-threaded model.
  - Added periodical chunk testing functionality (HDD_TEST_FREQ option).
  - New -v option (prints version and exits).

 Master:
  - Added "noowner" objects flag (causes objects to belong to current user).
  - Maintaining `mfsdirinfo` data online, so it doesn't need to be calculated
   on every request.
  - Filesystem access authorization system (NFS-like mfsexports.cfg file,
   REJECT_OLD_CLIENTS option) with ro/rw, password and maproot
   functionality.
  - New -v option (prints version and exits).

 Mount:
  - Rewritten options parsing in mount-like way, making possible to use
   standard FUSE mount utilities (see mfsmount(8) manual for new syntax).
   Note: old syntax is no longer accepted and mountpoint is mandatory now
   (there is no default).
  - Updated for FUSE 2.6+.
  - Added password, file data cache, attribute cache and entry cache options.
   By default attribute cache and directory entry cache are enabled,
   file data cache and file entry cache are disabled.
  - opendir() no longer reads directory contents - it's done on first
   readdir() now; fixes "rm -r" on recent Linux/glibc/coreutils combo.
  - Fixed mtime setting just before close() (by flushing file on mtime
   change); fixes mtime preserving on "cp -p".
  - Added statistics accessible through MFSROOT/.stats pseudo-file.
  - Changed master access method for mfstools (direct .master pseudo-file
   replaced by .masterinfo redirection); fixes possible mfstools race
   condition and allows to use mfstools on read-only filesystem.

 Tools:
  - Units cleanup in values display (exact values, IEC-60027/binary prefixes,
   SI/decimal prefixes); new options: -n, -h, -H and MFSHRFORMAT environment
   variable - refer to mfstools(8) manual for details).
  - mfsrgetgoal, mfsrsetgoal, mfsrgettrashtime, mfsrsettrashtime have been
   deprecated in favour of new "-r" option for mfsgetgoal, mfssetgoal,
   mfsgettrashtime, mfssettrashtime tools.
  - mfssnapshot utility replaced by mfsappendchunks (direct descendant of
   old utility) and mfsmakesnapshot (which creates "real" recursive
   snapshots and behaves similar to "cp -r").
  - New mfsfilerepair utility, which allows partial recovery of file with
   some missing or broken chunks.

 CGI scripts:
  - First public version of CGI scripts allowing to monitor MFS installation
   from WWW browser.

* MooseFS 1.5.14

   Not released to public.

* MooseFS 1.5.13

   Not released to public.

* MooseFS 1.5.12 (2009-01-28)

  - Fixed CRC cache in chunkserver

* MooseFS 1.5.11 (2008-12-18)

  - Added CRC-block and file descriptor cache in chunkserver.
  - Removed compilation warnings on 64-bit machines.
  - Optimized chunkserver choice in mfsmount.
  - Better replication algorithm.

* MooseFS 1.5.10 (2008-12-03)

  - Fixed replication algorithm.

* MooseFS 1.5.9 (2008-11-19)

  - Improved rebalancing algorithm.
  - Protections against overriding metadata.mfs.back by older metadata.mfs.
  - Fixes to build mfstools, mfsmaster and mfsmetarestore with Large File
   Support on Linux (previously only mfsmount had LFS enabled).
  - Less verbose logging in mfsmaster.
  - Log chunkserver disconnections in mfsmaster.

* MooseFS 1.5.8 (2008-08-26)

  - Better memory allocation in Master's chunks module.
  - Syslog messages used only for debugging purposes were commented out.

* MooseFS 1.5.7 (2008-08-01)

  - Fix for stack buffer overrun (by 4 bytes) in mfsmount.

* MooseFS 1.5.6 (2008-07-25)

  - Memory allocation fix in mfsmaster.

* MooseFS 1.5.5 (2008-07-10)

  - Mounting options fix for FreeBSD in mfsmount.

* MooseFS 1.5.4 (2008-07-08)

  - Blocking rebalance replications when undergoal chunks exist.
  - Minor bugfixes.
  - Build system improvements.
  - MooseFS and mfsmount version numbers synchronized.

* MooseFS 1.5 (2008-05-30)

  - First version released as Open Source.
