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.
Frank
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
I've written some notes on atomically replacing
file contents with standard tools here:
http://www.pixelbeat.org/docs/unix_file_replacement.html
cheers,
P?draig.
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
[email protected]