POSIX specification of rename(2) provides a very nice property for building atomic transcations: -------------------------------------------------------------------------------------------- If the old argument points to the pathname of a file that is not a directory, the new argument shall not point to the pathname of a directory. If the link named by the new argument exists, it shall be removed and old renamed to new. In this case, a link named new shall remain visible to other processes throughout the renaming operation and refer either to the file referred to by new or old before the operation began. -------------------------------------------------------------------------------------------- It appears that zfs rename does NOT implement same semantics for datasets, as it complains if a new dataset already exists. Two questions: what would be the most logical way to workaround this limitation and why was it implemented this way to begin with? Thanks, Roman.