diff --git a/CHANGELOG.md b/CHANGELOG.md index f797834aa..cea2f9987 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # Table of Contents +* [Changelog for 0.18.1](#changelog-for-restic-0181-2025-09-21) * [Changelog for 0.18.0](#changelog-for-restic-0180-2025-03-27) * [Changelog for 0.17.3](#changelog-for-restic-0173-2024-11-08) * [Changelog for 0.17.2](#changelog-for-restic-0172-2024-10-27) @@ -39,6 +40,106 @@ * [Changelog for 0.6.0](#changelog-for-restic-060-2017-05-29) +# Changelog for restic 0.18.1 (2025-09-21) +The following sections list the changes in restic 0.18.1 relevant to +restic users. The changes are ordered by importance. + +## Summary + + * Fix #5324: Correctly handle `backup --stdin-filename` with directory paths + * Fix #5325: Accept `RESTIC_HOST` environment variable in `forget` command + * Fix #5342: Ignore "chmod not supported" errors when writing files + * Fix #5344: Ignore `EOPNOTSUPP` errors for extended attributes + * Fix #5421: Fix rare crash if directory is removed during backup + * Fix #5429: Stop retrying uploads when rest-server runs out of space + * Fix #5467: Improve handling of download retries in `check` command + +## Details + + * Bugfix #5324: Correctly handle `backup --stdin-filename` with directory paths + + In restic 0.18.0, the `backup` command failed if a filename that includes at + least a directory was passed to `--stdin-filename`. For example, + `--stdin-filename /foo/bar` resulted in the following error: + + ``` + Fatal: unable to save snapshot: open /foo: no such file or directory + ``` + + This has now been fixed. + + https://github.com/restic/restic/issues/5324 + https://github.com/restic/restic/pull/5356 + + * Bugfix #5325: Accept `RESTIC_HOST` environment variable in `forget` command + + The `forget` command did not use the host name from the `RESTIC_HOST` + environment variable when filtering snapshots. This has now been fixed. + + https://github.com/restic/restic/issues/5325 + https://github.com/restic/restic/pull/5327 + + * Bugfix #5342: Ignore "chmod not supported" errors when writing files + + Restic 0.18.0 introduced a bug that caused `chmod xxx: operation not supported` + errors to appear when writing to a local file repository that did not support + chmod (like CIFS or WebDAV mounted via FUSE). Restic now ignores those errors. + + https://github.com/restic/restic/issues/5342 + + * Bugfix #5344: Ignore `EOPNOTSUPP` errors for extended attributes + + Restic 0.18.0 added extended attribute support for NetBSD 10+, but not all + NetBSD filesystems support extended attributes. Other BSD systems can likewise + return `EOPNOTSUPP`, so restic now ignores these errors. + + https://github.com/restic/restic/issues/5344 + + * Bugfix #5421: Fix rare crash if directory is removed during backup + + In restic 0.18.0, the `backup` command could crash if a directory was removed + between reading its metadata and listing its directory content. This has now + been fixed. + + https://github.com/restic/restic/pull/5421 + + * Bugfix #5429: Stop retrying uploads when rest-server runs out of space + + When rest-server returns a `507 Insufficient Storage` error, it indicates that + no more storage capacity is available. Restic now correctly stops retrying + uploads in this case. + + https://github.com/restic/restic/issues/5429 + https://github.com/restic/restic/pull/5452 + + * Bugfix #5467: Improve handling of download retries in `check` command + + In very rare cases, the `check` command could unnecessarily report repository + damage if the backend returned incomplete, corrupted data on the first download + try which is afterwards resolved by a download retry. + + This could result in an error output like the following: + + ``` + Load(, 33918928, 0) returned error, retrying after 871.35598ms: readFull: unexpected EOF + Load(, 33918928, 0) operation successful after 1 retries + check successful on second attempt, original error pack 34567890ab[...] contains 6 errors: [blob 12345678[...]: decrypting blob from 34567890 failed: ciphertext verification failed ...] + [...] + Fatal: repository contains errors + ``` + + This fix only applies to a very specific case where the log shows `operation + successful after 1 retries` followed by a `check successful on second attempt, + original error` that only reports `ciphertext verification failed` errors in the + pack file. If any other errors are reported in the pack file, then the + repository still has to be considered as damaged. + + Now, only the check result of the last download retry is reported as intended. + + https://github.com/restic/restic/issues/5467 + https://github.com/restic/restic/pull/5495 + + # Changelog for restic 0.18.0 (2025-03-27) The following sections list the changes in restic 0.18.0 relevant to restic users. The changes are ordered by importance. diff --git a/VERSION b/VERSION index 498b6fb3d..124846b48 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.18.0-dev +0.18.1-dev diff --git a/changelog/unreleased/issue-5324 b/changelog/0.18.1_2025-09-21/issue-5324 similarity index 78% rename from changelog/unreleased/issue-5324 rename to changelog/0.18.1_2025-09-21/issue-5324 index 0f5ff77e4..2143c568e 100644 --- a/changelog/unreleased/issue-5324 +++ b/changelog/0.18.1_2025-09-21/issue-5324 @@ -1,14 +1,14 @@ -Bugfix: Correctly handle `backup --stdin-filename` with directories +Bugfix: Correctly handle `backup --stdin-filename` with directory paths In restic 0.18.0, the `backup` command failed if a filename that includes -a least a directory was passed to `--stdin-filename`. For example, +at least a directory was passed to `--stdin-filename`. For example, `--stdin-filename /foo/bar` resulted in the following error: ``` Fatal: unable to save snapshot: open /foo: no such file or directory ``` -This has been fixed now. +This has now been fixed. https://github.com/restic/restic/issues/5324 https://github.com/restic/restic/pull/5356 diff --git a/changelog/unreleased/issue-5325 b/changelog/0.18.1_2025-09-21/issue-5325 similarity index 52% rename from changelog/unreleased/issue-5325 rename to changelog/0.18.1_2025-09-21/issue-5325 index 883391a0a..8c464e9ca 100644 --- a/changelog/unreleased/issue-5325 +++ b/changelog/0.18.1_2025-09-21/issue-5325 @@ -1,7 +1,7 @@ -Bugfix: Correctly handle `RESTIC_HOST` in `forget` command +Bugfix: Accept `RESTIC_HOST` environment variable in `forget` command The `forget` command did not use the host name from the `RESTIC_HOST` -environment variable. This has been fixed. +environment variable when filtering snapshots. This has now been fixed. https://github.com/restic/restic/issues/5325 https://github.com/restic/restic/pull/5327 diff --git a/changelog/unreleased/issue-5342 b/changelog/0.18.1_2025-09-21/issue-5342 similarity index 76% rename from changelog/unreleased/issue-5342 rename to changelog/0.18.1_2025-09-21/issue-5342 index e9887fda2..5a247b0ca 100644 --- a/changelog/unreleased/issue-5342 +++ b/changelog/0.18.1_2025-09-21/issue-5342 @@ -1,6 +1,6 @@ Bugfix: Ignore "chmod not supported" errors when writing files -Restic 0.18.0 introduced a bug that caused "chmod xxx: operation not supported" +Restic 0.18.0 introduced a bug that caused `chmod xxx: operation not supported` errors to appear when writing to a local file repository that did not support chmod (like CIFS or WebDAV mounted via FUSE). Restic now ignores those errors. diff --git a/changelog/0.18.1_2025-09-21/issue-5344 b/changelog/0.18.1_2025-09-21/issue-5344 new file mode 100644 index 000000000..789d1d8c2 --- /dev/null +++ b/changelog/0.18.1_2025-09-21/issue-5344 @@ -0,0 +1,7 @@ +Bugfix: Ignore `EOPNOTSUPP` errors for extended attributes + +Restic 0.18.0 added extended attribute support for NetBSD 10+, but not all +NetBSD filesystems support extended attributes. Other BSD systems can +likewise return `EOPNOTSUPP`, so restic now ignores these errors. + +https://github.com/restic/restic/issues/5344 diff --git a/changelog/0.18.1_2025-09-21/issue-5429 b/changelog/0.18.1_2025-09-21/issue-5429 new file mode 100644 index 000000000..941953a35 --- /dev/null +++ b/changelog/0.18.1_2025-09-21/issue-5429 @@ -0,0 +1,8 @@ +Bugfix: Stop retrying uploads when rest-server runs out of space + +When rest-server returns a `507 Insufficient Storage` error, it indicates +that no more storage capacity is available. Restic now correctly stops +retrying uploads in this case. + +https://github.com/restic/restic/issues/5429 +https://github.com/restic/restic/pull/5452 diff --git a/changelog/unreleased/issue-5467 b/changelog/0.18.1_2025-09-21/issue-5467 similarity index 71% rename from changelog/unreleased/issue-5467 rename to changelog/0.18.1_2025-09-21/issue-5467 index 4b50fc857..bb58a6ea4 100644 --- a/changelog/unreleased/issue-5467 +++ b/changelog/0.18.1_2025-09-21/issue-5467 @@ -1,10 +1,11 @@ Bugfix: Improve handling of download retries in `check` command -In very rare cases, the `check` command could unnecessarily report a -repository damage if the backend returns incomplete, corrupted data on -the first download try which is resolved by a download retry. +In very rare cases, the `check` command could unnecessarily report repository +damage if the backend returned incomplete, corrupted data on the first download +try which is afterwards resolved by a download retry. This could result in an error output like the following: + ``` Load(, 33918928, 0) returned error, retrying after 871.35598ms: readFull: unexpected EOF Load(, 33918928, 0) operation successful after 1 retries @@ -13,15 +14,14 @@ check successful on second attempt, original error pack 34567890ab[...] contains Fatal: repository contains errors ``` -This fix only applies to a very specific case. The required condition is -a `operation successful after 1 retries` error in the log, later followed by -a `check successful on second attempt, original error` error that only reports +This fix only applies to a very specific case where the log shows +`operation successful after 1 retries` followed by a +`check successful on second attempt, original error` that only reports `ciphertext verification failed` errors in the pack file. If any other errors are reported in the pack file, then the repository still has to be considered as damaged. -Now, only the check result of the last download retry is reported as -intended. +Now, only the check result of the last download retry is reported as intended. https://github.com/restic/restic/issues/5467 https://github.com/restic/restic/pull/5495 diff --git a/changelog/unreleased/pull-5421 b/changelog/0.18.1_2025-09-21/pull-5421 similarity index 62% rename from changelog/unreleased/pull-5421 rename to changelog/0.18.1_2025-09-21/pull-5421 index 3a76d4fcd..0eb49fc44 100644 --- a/changelog/unreleased/pull-5421 +++ b/changelog/0.18.1_2025-09-21/pull-5421 @@ -1,8 +1,7 @@ Bugfix: Fix rare crash if directory is removed during backup -In restic 0.18.0, the `backup` command could crash if a directory is removed -inbetween reading its metadata and listing its directory content. - -This has been fixed. +In restic 0.18.0, the `backup` command could crash if a directory was removed +between reading its metadata and listing its directory content. This has now +been fixed. https://github.com/restic/restic/pull/5421 diff --git a/changelog/unreleased/issue-5344 b/changelog/unreleased/issue-5344 deleted file mode 100644 index 38119d0ec..000000000 --- a/changelog/unreleased/issue-5344 +++ /dev/null @@ -1,7 +0,0 @@ -Bugfix: Ignore EOPNOTSUPP as an error for xattr - -Restic 0.18.0 added xattr support for NetBSD 10+, but not all NetBSD -filesystems support xattrs. Other BSD systems can likewise return -EOPNOTSUPP, so restic now simply ignores EOPNOTSUPP errors for xattrs. - -https://github.com/restic/restic/issues/5344 diff --git a/changelog/unreleased/issue-5429 b/changelog/unreleased/issue-5429 deleted file mode 100644 index e8e7ca513..000000000 --- a/changelog/unreleased/issue-5429 +++ /dev/null @@ -1,8 +0,0 @@ -Bugfix: do not retry if rest-server runs out of space - -Rest-server return error `507 Insufficient Storage` if no more storage -capacity is available at the server. Restic now no longer retries uploads -in this case. - -https://github.com/restic/restic/issues/5429 -https://github.com/restic/restic/pull/5452 diff --git a/cmd/restic/global.go b/cmd/restic/global.go index bb477b760..1b73d3e34 100644 --- a/cmd/restic/global.go +++ b/cmd/restic/global.go @@ -44,7 +44,7 @@ import ( // to a missing backend storage location or config file var ErrNoRepository = errors.New("repository does not exist") -var version = "0.18.0-dev (compiled manually)" +var version = "0.18.1-dev (compiled manually)" // TimeFormat is the format used for all timestamps printed by restic. const TimeFormat = "2006-01-02 15:04:05"