UBIFS question, atomic file create/rename semantics
Artem Bityutskiy
dedekind1 at gmail.com
Mon Apr 4 04:59:24 EDT 2011
Hi,
On Mon, 2011-04-04 at 09:54 +0100, Jon Povey wrote:
> I have a file I want to create on first-time boot on my system,
> on UBIFS. It's done in a shell script, and the logic is something like
>
> if [ ! -e $FILE ]
> then
> # create the file
> fi
>
> Once or twice this file has turned out to be zero length (or possibly
> contain nulls, I am working on slightly vauge reports).
>
> Looking into the issues of sync and semantics, I think this is related
> to not doing sync and rename.
> The script was pretty much just saying "prog > $FILE" and no sync.
>
> I came up with the following and would appreciate any comments about
> how reliable this should be:
>
> if [ ! -e $FILE ]
> then
> prog > $FILE.tmp
> sync
> mv $FILE.tmp $FILE
> sync
> fi
>
> My understanding is that as the .tmp file is on the same filesystem
> and I ran sync, the mv means the final file atomically either exists
> with full correct contents, or will not exist at all (after surprise
> power cycle during the process).
>
> A quick "yes, fine" or "won't work" would be appreciated.
It does not mean you should trust me and not test that, but I think
"yes", your sequence should make it.
--
Best Regards,
Artem Bityutskiy (Артём Битюцкий)
More information about the linux-mtd
mailing list