On 03/30/2013 08:08 PM, Andreas Dilger wrote: > On 2013-03-30, at 12:49 PM, Pavel Machek wrote: >> Hmm, really? AFAICT it would be simple to provide an >> open_deleted_file("directory") syscall. You'd open_deleted_file(), >> copy source file into it, then fsync(), then link it into filesystem. >> >> That should have atomicity properties reflected. > > Actually, the open_deleted_file() syscall is quite useful for many > different things all by itself. Lots of applications need to create > temporary files that are unlinked at application failure (without a > race if app crashes after creating the file, but before unlinking). > It also avoids exposing temporary files into the namespace if other > applications are accessing the directory. > > We've added a library routine that does this for Lustre in a hackish > way (magical filename created in target directory) for being able to > migrate files between data servers, HSM, defragmentation, rsync, etc. > > Cheers, Andreas This reminds me of the flink() discussion: http://marc.info/?l=linux-kernel&m=104965452917349 Also kinda related is the exchangedata() OSX system call to "atomically exchange data between two files" thanks, Pádraig. -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html