pub enum NameError {
Gone,
Replaced,
Refused,
Other,
}Expand description
What an error on one name says about that name. Every look a barrier takes at the tree by name (the walk’s stat and its open of a directory, the upload’s open, the confirmation of an absence) sorts its error by this one rule, so an error about one name decides that name, and only an error about none of them fails the barrier (L-144). Before it, each call site kept its own list, and any errno not on it, ENOENT among them, failed the whole barrier: a tree in which anything made and removed files stopped publishing for as long as it did.
Variants§
Gone
Nothing is at the name any more (ENOENT): it, or a directory above it, was removed or renamed since it was listed.
Replaced
Something other than what was listed is there: a component that is
no longer a directory (ENOTDIR), a symlink where a file or a
directory was (ELOOP), or not a regular file (safefs’s
InvalidInput).
Refused
The tree’s owner refused the syncer (EACCES or EPERM): held.
Other
Anything else (EIO, ENAMETOOLONG, EMFILE…): no standing condition of one name, so it fails the barrier.