You are on page 1of 1

Rename is a complex beast.

The following table shows which rename(2) operations


should succeed and which should fail.

o: success
E: error (either unionfs or vfs)
X: EXDEV

none = file does not exist


file = file is a file
dir = file is a empty directory
child= file is a non-empty directory
wh = file is a directory containing only whiteouts; this makes it logically
empty

none file dir child wh


file o o E E E
dir o E o E o
child X E X E X
wh o E o E o

Renaming directories:
=====================

Whenever a empty (either physically or logically) directory is being renamed,


the following sequence of events should take place:

1) Remove whiteouts from both source and destination directory


2) Rename source to destination
3) Make destination opaque to prevent anything under it from showing up

You might also like