On Tue, Nov 12, 2019 at 08:25:46AM -0500, Greg Troxel wrote: > David Brownlee <a...@absd.org> writes: > > > On Tue, 12 Nov 2019 at 11:33, Jaromír Doleček <jaromir.dole...@gmail.com> > > wrote: > >> > >> Le mar. 12 nov. 2019 à 12:05, Martin Husemann <mar...@duskware.de> a écrit > >> : > >>> > >>> Not seen this locally, but that would be the switch to bsd/libarchive tar. > >>> Maybe it does not unlink files before extraction and replaces them > >>> in-space? > >>> > >>> I do the same kind of updates, but usually on a very quiet system. > >>> > >>> The crashes you see are from other running processes? Joerg would likely > >>> say: "don't do that" ;-) > >>> > >> > >> I thought we do unlink by default, I think I remember a commit to that > >> effect in past. The unlink is very useful default behaviour of GNU tar. > >> In-place overwrite is very rarely the wanted behaviour. > > > > Aha thanks! > > > > I would argue the switch to unlink no longer being the default is a > > regression. If its mandated by standards or we're the only outlier > > then it probably makes sense to switch, but otherwise its sprinkling > > occasional non deterministic breakage across a bunch of scripts which > > previously ran fine on NetBSD.
It does not force an unlink first, but will unlink if there is a conflict. So the question would be why open(2) with O_CREAT|O_EXCL doesn't fail. > I'm not quite clear on 'unlink by default', but it seems to me the > replacement files should be written to a temporary name and then > renamed() into place so the file is either the old version or the new > version. That would dramatically increase the time it takes for an untar for little to no gain. Joerg