thomas@netapp.com (Tom Haynes) writes: [...]
In pre-6.4 systems, we always failed a rename() for directories and files between qtrees. In 6.4 systems, we allow renames() for files across qtrees, but not directories across qtrees.
A rename() results in the inode and none of the data nodes, being modified. Thus a 10G file gets moved as fast or as slow as a 1k file.
Allowing the rename() of the dir adds too much complexity in that we would have to handle atomicity, recovery, users modifying subdirs, multiple hard links inside the directory (detecting whether it stayed within the tree or not), and so on.
What happens if the file being rename()'d has multiple hard links? Wouldn't this result in the inode being linked into more than one qtree?
Chris Thompson Email: cet1@cam.ac.uk
We don't allow the rename, which forces a copy. This in turn reduces the hard link count.