Re: atomically swap two files

Dave Chinner
2010-11-26T14:19:18Z

On Fri, Nov 26, 2010 at 11:47:52AM +0000, Pádraig Brady wrote:
> On 25/11/10 20:11, Frank A. Kingswood wrote:
> > Hi!
> >
> > Is it possible to swap two files in an atomic way, so that after the
> > syscall either the two files have exchanged names or neither has been
> > modified?
> >
> > I suspect that btrfs could do it, but I'm wondering about ext3/4.
>
> I don't think there is anything equivalent to exchangedata() on Linux
> http://developer.apple.com/library/mac/#DOCUMENTATION/Darwin/Reference/ManPages/man2/exchangedata.2.html

XFS can do that, though the interface is an ioctl (XFS_IOC_SWAPEXT)
whose parameters are closely tied to the functionality of the only
user: the online defragmenter (xfs_fsr). It would be pretty easy to
wire it up to such a syscall if one existed, though....

Cheers,

Dave.
--
Dave Chinner
david@fromorbit.com