svn commit: r243228 - head/etc

Chris Rees utisoft at gmail.com
Wed Nov 21 10:38:13 UTC 2012


On 20 Nov 2012 13:53, "Bruce Evans" <brde at optusnet.com.au> wrote:
>
> On Tue, 20 Nov 2012, John Hay wrote:
>
>> On Sun, Nov 18, 2012 at 02:21:05PM +0000, Chris Rees wrote:
>>>
>>> Log:
>>>   cp -R misses out dotfiles; use pax instead to copy file hierarchies
>>>
>>>   PR:           conf/99721 (based on)
>>>   Submitted by: Florian Zavatzki <f_zavatzki at blue-network.org>
>>>   Approved by:  hrs
>>>   MFC after:    1 month
>>>
>>> Modified:
>>>   head/etc/rc.initdiskless
>>>
>>> Modified: head/etc/rc.initdiskless
>>>
==============================================================================
>>> --- head/etc/rc.initdiskless    Sun Nov 18 14:05:28 2012
 (r243227)
>>> +++ head/etc/rc.initdiskless    Sun Nov 18 14:21:05 2012
 (r243228)
>>> @@ -354,7 +354,7 @@ for i in ${templates} ; do
>>>         subdir=${j##*/}
>>>         if [ -d $j -a ! -f $j.cpio.gz  ]; then
>>>             create_md $subdir
>>> -           cp -Rp $j/ /$subdir
>>> +           (cd $j && pax -rw . /$subdir)
>>>         fi
>>>      done
>>>      for j in /conf/$i/*.cpio.gz ; do
>>
>>
>> Have you tested this on a diskless and readonly system? It looks like pax
>> need to write something in /tmp and it might not be writeable yet. I got
>> an error, after the first of /bin/pax not found and having to add that to
>> the list of files needed.
>
>
> It uses mkstemp(3), normally in /tmp but it honors $TMPDIR.  It seems to
> always create 1 temporary file (even for copying a single regular file),
> and sometimes 2 temporary files.  Both of the temporary files seem to be
> to hold metadata for file times and hashes, in case it is too large for
> memory.  cp -Rp probably needs to do the same (except it is imperfect to
> unnecessarily assume that /tmp is writable), to fix its link and timestamp
> handling.
>
> BTW, I think it is a large bug that ed and vi create temporary files even
> before you change anything.  Even view(1) (vi -R) wants to scribble on
> /var/tmp/vi.recover.  At least it doesn't refuse to start if this is not
> writeable.  ed(1) is considerably more broken.  It
> - hard codes /tmp and doesn't use _PATH_TMP or honor $TMPDIR
> - always scribbles in /tmp
> - refuses to start if /tmp is not writeable.
> This makes ed(1) wlays broken in single user shells until '/' is mounted
> rw, although ed is the only editor that is sure to be there and the
> reason for using a single user shell is often that there is a problem
> with mounting '/' rw.

*sigh*

Hiroki Sato tested it, but i don't know if he had ro /.  This appears to
have caused a few problems, possibly more than the benefit of the change
(hard links).

I'm inclined to be a coward and just revert this later; anyone who can get
there before me, feel free.

When I'm done with the other rc PRs (haha) I'll look at fixing our cp.

Chris


More information about the svn-src-head mailing list