Version Next - Implement nbdkit "block_size" callback. Version 2.1.2 released April 23, 2024 - Automatically recreate nbdkit socket's directory if missing (issue #219) - Recalculate date and authorization on retry (issue #214) Version 2.1.1 released October 23, 2023 - Fixed bug with bulk delete HTTP requests (issue #211) - Fixed empty payload bug when retrying an upload (issue #212) - Check for errors returned by curl_easy_setopt() - Added --noCurlCache flag to facilitate debugging - Bump wait time for nbdkit to start from 1s to 5s Version 2.1.0 released September 23, 2023 - Avoid sending an empty Accept-Encoding header (issue #208) - Use fallocate(FALLOC_FL_PUNCH_HOLE) for empty disk cache blocks (issue #200) - Made sync(1) work on s3backer file to flush cached data (issue #197) - Fixed bug where s3b_compress=deflate NDB flag would fail (issue #195) - Fixed bug in zero cache "current_cache_size" stats value (issue #204) - Reuse cURL handles after normal HTTP error codes (issue #199) - Run modprobe(8) if needed when starting with the --nbd flag (issue #203) - Use newer OpenSSL 3.0 API functions when available Version 2.0.2 released July 17, 2022 - Fixed bugs with the --nbd flag when not also using -f flag (issue #188) - Fixed free() of invalid pointer bug in zero_cache.c (issue #191) - Added support for zstd compression (pr #187) Version 2.0.1 released June 4, 2022 - Fix null pointer dereference bug in zero cache. Version 2.0.0 released June 4, 2022 - Support running as a Network Block Device (NBD) server (issue #178) - Fix slow write performance with large block sizes since 1.6.0 (issue ##185) - Disable MD5 cache by default now that Amazon S3 is consistent (issue #183) - Fix bug where "(null)" was appearing in usage message (issue #161) - Give more meaningful usage error when size limits are exceeded (issue #162) - Added flag "--http11" to restrict cURL to HTTP 1.1 (issue #168) - Clean up mount token if FUSE itself fails to start (issue #175) - Detect HTTP redirects and emit appropriate hint/warning (issue #174) - Added man page reference to Linux bcache (issue #169) - Added "--blockCacheFileAdvise" flag (pr #176) - Treat 3xx HTTP response codes as errors Version 1.6.3 released October 2, 2021 - Fixed bug with `--listBlocks' threads doing redundant overlapping queries - Refactor to support multiple different compression algorithms - Added support for bulk deletion of blocks (issue #46) - Fixed mutex handling bug in block cache (issue #152) - Release mutexs prior to destruction (issue #151) - Fixed use-after-free bug in XML parser (pr #154) Version 1.6.2 released June 14, 2020 - Require test directory to be absolute unless `-f' flag given (issue #143) - Show HTTP error response payload content when `--debug-http' flag given - List blocks in the background; added `--listBlocksThreads' (issue #24) - Don't let IAM credentials expire while listing blocks (issue #146) - Fixed bug parsing "--configFile" inside comma-separated option list Version 1.6.1 released December 30, 2020 - Fixed integer overflow bug setting "x-amz-meta-s3backer-filesize" (issue #141) Version 1.6.0 released December 23, 2020 - Added `--sse-key-id' flag (issue #137) - Log a more useful error message when IAM credentials not found (issue #136) - Warn on startup if disk space is insufficient for disk cache (issue #138) - Added zero block cache to better handle fstrim operations (issue #139) Version 1.5.6 released October 30, 2020 - Fixed phantom write error when server-side-encryption used (issue #135) - Allow bucket names with "subdirectory" for prefix (issue #130) - Added `--configFile' flag (issue #129) - Added `--accessKeyEnv' flag (issue #128) - Removed deprecated `--rrs' flag Version 1.5.5 released August 22, 2020 - Added `--no-vhost' flag (issue #117) - Added `--blockCacheNumProtected' flag (pr #119) - Added `--test-errors', `--test-delays', and `--test-discard' - Disallow stream encryption ciphers (issue #123) Version 1.5.4 released October 8, 2019 - Only set "x-amz-server-side-encryption" header with PUT requests (issue #116) - Don't kill IAM thread unless actually started (issue #115). Version 1.5.3 released August 9, 2019 - Fixed bug where IAM update thread was killed after fork (issue #115) - Fixed use-after-free bug in block_cache_verified() (issue #113) - Fixed use-after-free bug when updating IAM credentials (pr #114) - Fixed bug in test mode that was causing bogus I/O errors Version 1.5.2 released July 9, 2019 - Fixed bug where block cache would not work when run in the background (issue #112) - Fixed bug where we were not parsing HTTP headers case-insensitively (pr #11) - Bail out during `--listBlocks' if we see an object name past our block range - Added `--blockHashPrefix' flag (issue #80) Version 1.5.1 released April 15, 2019 - Fixed a few places where fixed-sized buffers were too small (issue #108) - Don't claim cache hit if partial write required reading the block (pr #103) - Exit process with error code if s3backer store setup fails at startup - Reset statistics if stats file is unlinked (issue #106) Version 1.5.0 released June 9, 2018 - Add support for recovering dirty blocks in the disk cache (issue #87) - Replaced boolean 'mounted' flag with a unique 32-bit mount token (issue #87) - Wait for min_write_delay before access after write error (issue #76) - Configure TCP keep-alive on HTTP connections (issue #78) - Added support for server side encryption (pull #81) Version 1.4.4 released February 1, 2017 - Added `--defaultContentEncoding' for non-compliant backends (issue #68) - Fixed auth bug when prefix contains URL-encodable char (issue #69) - Remove restriction preventing streaming encryption modes (issue #70) Version 1.4.3 released July 25, 2016 - Add support for STANDARD_IA storage class (issue #59) - Set "Accept-Encoding" header appropriately (issue #48) - Fix build issue with OpenSSL 1.1.0 (issue #64) Version 1.4.2 released September 1, 2015 - Update license to fix OpenSSL vs. GPL conflict - Remove obsolete Debian files - Fix typos in help output Version 1.4.1 released May 4, 2015 - Fix use-after-free bug configuring base URL (github issue #44) Version 1.4.0 released April 17, 2015 - Added support for authentication version 4 (issue #51) - Added support for credentials via IAM role from EC2 meta-data (issue #48) - Fixed bug where `--erase' did not clear the mounted flag - Moved from Google project hosting to GitHub - Fixed compile problem on FreeBSD Version 1.3.7 (r496) released 18 July 2013 - Add `--keyLength' for overriding generated encryption key length Version 1.3.6 (r493) released 16 July 2013 - Fix use of MAX_HOST_NAME in http_io.c (issue #42) - Fix encryption key generation bug (on some systems) Version 1.3.5 (r485) released 29 May 2013 - Check for duplicate mount at startup (issue #10) - Remove obsolete backward-compatibility block size check Version 1.3.4 (r476) released 2 Apr 2013 - Support FUSE fallocate() call to zero unused blocks Version 1.3.3 (r463) released 7 Apr 2012 - Fix bug in validation of --baseURL parameter (issue #34) - Accept 404 Not Found as a valid response to a DELETE (issue #35) - Added a fix for building on Mac OS X (issue #32) Version 1.3.2 (r451) released 14 May 2011 - Added `--directIO' flag to disable kernel caching of the backed file. - Fixed bug where the stats file was not up to date (issue #26). - Fixed bug with `--blockCacheMaxDirty' not working (issue #25). - Added automatic block cache disk file resizing (issue #23). - Added `--maxUploadSpeed' and `--maxDownloadSpeed' flags. - Added `-rrs' flag to support Reduced Redundancy Storage. - Fixed missing warning for `--baseURL' when missing trailing slash. Version 1.3.1 (r413) released 19 Oct 2009 - Added `--blockCacheMaxDirty' flag. - Fixed cURL handle leak when cancelling in-progress writes. - Updated Mac OS X build instructions and added Snow Leopard support. Version 1.3.0 (r392) released 27 Sep 2009 - Added support for local cache files that can persist across restarts. - Added built-in support for encryption and authentication. - In-progress writes are now cancelled when a duplicate write occurs. - Changed default for `--blockCacheWriteDelay' from zero to 250ms. - Fix obscure and unlikely deadlock bug in ec_protect.c. - Allow configurable compression level via --compress=LEVEL. - Fix bug that caused spurious "impossible expected MD5" log messages. Version 1.2.3 (r333) released 15 May 2009 - Added `--vhost' flag for virtual hosted style URLs in all requests. - Don't send LOG_DEBUG messages to syslog unless --debug flag given. - Fix race condition when generating HTTP Date: headers. - Allow command line flags to be specified in /etc/fstab. Version 1.2.2 (r316) released 20 Dec 2008 - Added `--compress' flag enabling compression of file blocks. Note: compressed blocks are not compatible with versions < 1.2.2. - Disable the MD5 cache when the `--readOnly' flag is given. - Make `--md5CacheTime=0' really mean `infinite' as promised in man page. - Added `--debug-http' flag for debugging HTTP headers. - Don't let block and MD5 caches be configured larger than necessary. - Fixed a few minor issues with statistics reporting. Version 1.2.1 (r300) released 23 Oct 2008 - Added `--erase' and `--quiet' command line flags. - Added `--blockCacheSync' command line flag. - Fixed extra copying slowdown when using large block sizes (issue #5). - Eliminate extra copy of blocks when written by block_cache worker threads. - Fixed bug in EC layer where dirty data might not be flushed at shutdown. - Fixed bug where 'http' was shown instead of 'https' in mount(8) output when the --ssl flag was given. Version 1.2.0 (r248) released 12 Sep 2008 - Use new custom hash table implementation; this removes glib dependency. - Replaced `--assumeEmpty' flag with safer and more useful `--listBlocks'. - Fixed bug where the zero block optimization got disabled when the MD5 cache was disabled. - Supply `-o allow_other' option by default, since default mode is 0600. - Fixed bug where cp(1)'ing the backed file gave `Illegal seek' error. - Use FUSE version 25 API so code builds on older O/S distributions. Version 1.1.1 (r202) released 5 Aug 2008 - Added `--ssl' as an alias for `--baseURL https://s3.amazonaws.com/'. - Added `--insecure' and `--cacert' flags to configure cURL SSL checks. - Implemented `--blockCacheWriteDelay' and `--blockCacheTimeout' flags. - Implemented read-ahead using `--readAhead' and `--readAheadTrigger' flags. - Set FUSE max_readahead option to zero by default since we do it too now. - Added new `--test' flag which turns on local test mode. - Display the URL, bucket, and prefix in the output of mount(8). - Fixed bug where an error during auto-detection would cause a segfault. - Fixed bug where read errors from the underlying store were being ignored by the block cache layer. Version 1.1.0 (r150) released 26 July 2008 - Added a block cache with parallel writes which vastly improves performance. - Added a new `stats' file to the filesystem containing various statistics. - Added `--noAutoDetect' flag to disable auto-detection at startup. - Fixed a few small race conditions and memory leaks. - Return zeroes for unwritten blocks with `assumeEmpty'. Version 1.0.5 (r111) released 15 July 2008 - Avoid reuse of CURL instance after receiving any HTTP error (issue #3) - On MacOS, prevent kernel timeouts prior to our own timeout (issue #2) - Replaced `--connectTimeout' and `--ioTimeout' with `--timeout' because CURL's I/O timeout includes in it the connection time as well. Version 1.0.4 (r82) released 9 July 2008 - Retry on all HTTP error codes, not just 500 or greater. Tests show that a valid request can return a 4xx response due to network issues. - Added `--fileMode' and `--readOnly' flags. - Added `--assumeEmpty' flag. - Support 'E' for 'exabytes'. - Port to Mac OS (issue #1) Version 1.0.3 (r39) released 30 June 2008 - Implement exponential backoff: replace ``--maxRetry'' and ``--retryPause'' with ``--initialRetryPause'' and ``--maxRetryPause''. - Fix `--accessType' flag which was not being properly handled. - Improvements to the man page. Version 1.0.2 (r25) released 20 June 2008 - Fix bug in setting User-Agent HTTP header. - Fix glitch in man page. Version 1.0.1 (r18) released 20 June 2008 - Store filesystem size in meta-data associated with the first block and use it to auto-detect filesystem block and file sizes if not specified. As a result, `--size' flag is now optional. - Log a warning and zero remaining bytes when we encounter a short read. - Add User-Agent HTTP header to all HTTP requests. - Include SVN revision in version string. - Don't log every HTTP operation unless `-d' is passed. - Added `--force' flag. Version 1.0.0 released 19 June 2008 - Initial release