mirror of
https://git.savannah.gnu.org/git/tar.git
synced 2026-09-26 18:14:15 +00:00
Warn “file changed as we read it” less often
* src/create.c (dump_file0): Remove an fstatat call that is unnecessary because the file wasn’t read so we can treat the first fstatat as atomic. Warn “file changed” when the file’s size, mtime, user ID, group ID, or mode changes, instead of when the file’s size or ctime changes. Also, when such a change happens, do not change exit status if --ignore-failed-read. Finally, don’t attempt to change atime back if it didn’t change.
This commit is contained in:
@@ -11,6 +11,23 @@ version 1.34.90 (git)
|
||||
|
||||
* Bug fixes
|
||||
|
||||
** Warn "file changed as we read it" less often.
|
||||
Formerly, tar warned if the file's size or ctime changed.
|
||||
However, this generated a false positive if tar read a file
|
||||
while another process hard-linked to it, changing its ctime.
|
||||
Now, tar warns if the file's size, mtime, user ID, group ID,
|
||||
or mode changes. Although neither heuristic is perfect,
|
||||
the new one should work better in practice.
|
||||
|
||||
** Fix --ignore-failed-read to ignore file-changed read errors
|
||||
as far as exit status is concerned. You can now suppress file-changed
|
||||
issues entirely with --ignore-failed-read --warning=no-file-changed.
|
||||
|
||||
** Fix --remove-files to not remove a file that changed while we read it.
|
||||
|
||||
** Fix --atime-preserve=replace to not fail if there was no need to replace,
|
||||
either because we did not read the file, or the atime did not change.
|
||||
|
||||
** Fix handling of prefix keywords not followed by "." in pax headers.
|
||||
|
||||
** Fix handling of out-of-range sparse entries in pax headers.
|
||||
|
||||
Reference in New Issue
Block a user