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