[TUHS] moving directories in svr2

Will Senn will.senn at gmail.com
Thu Dec 30 01:44:32 AEST 2021


On 12/29/21 9:17 AM, Clem Cole wrote:
> Not until the BSD rename system call,.
>
> Try it on V6 or V7 and you will get 'directory exists' as an error.
>
Sure enough. I never really noticed. I guess cuz I was careful about 
creating directories in the first place.

> Think about the UNIX FS and the link system call. How is mv 
> implemented?   You link the file to the new directory and the unlink 
> it from the old one.   But a directory file can not be in two 
> directories at the same time as the .. link would fail.      When Joy 
> created the rename system call it became possible.  Until System V 
> picked it up (IIRC was SVR3), only system that supported the BSD world.
>
Nice summary. I will add it to my systems programming investigations list.
> What I have forgotten is if the BSD mv command for 4.1 supported it.  
> If it did then it was not atomic -- it would have had to create the 
> new directory, move the contents independently and then remove the old 
> one.
>
> FWIW: when we did the first SMP UNIX at Masscomp we had supported the 
> BSD FS and the 4.1c/4.2 system calls.   Joy's implementation of rename 
> was a real mess.   Making it atomic, supporting an SMP and deal with 
> all the recovery paths on an error took some work.  It's funny, the 
> rename system call is a simple idea, but on a failure when 
> partially thru it, makes unwinding the partial completion an 
> interesting problem.
It's impressive what early work was done and how few today really 
understand the challenges that were met and overcome to give us our 
cushy oses.
>
> Clem
>
> On Wed, Dec 29, 2021 at 9:34 AM Will Senn <will.senn at gmail.com> wrote:
>
>     I'm a little flummoxed in trying to move some directories around
>     in svr2. Shouldn't the following work?
>
>         mkdir a
>         mkdir b
>         mv a b
>
>     I get the following error:
>     mv: b exists
>
>     I tried many of the possible variants including:
>
>         mv a b/
>         mv: b/ exists
>         mv a b/a
>         mv: directory rename only
>         cd b
>         mv ../a .
>         mv: . exists
>         mv ../a ./
>         mv: ./ exists
>         mv ../a ./a
>         mv: directory rename only
>
>
>     If moving directories into existing directories wasn't allowed in
>     those days, 1) how were directories managed? and 2) when did
>     moving directories into directories become a thing?
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://minnie.tuhs.org/pipermail/tuhs/attachments/20211229/c533564a/attachment.htm>


More information about the TUHS mailing list