public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Juliusz Chroboczek <jch@pps.jussieu.fr>
To: linux-kernel@vger.kernel.org
Subject: Write is not atomic?
Date: Mon, 15 Oct 2012 23:36:15 +0200	[thread overview]
Message-ID: <7i391fto34.fsf@lanthane.pps.jussieu.fr> (raw)

Hi,

The Linux manual page for write(2) says:

    The adjustment of the file offset and the write operation are
    performed as an atomic step.

This is apparently an extension to POSIX, which says

    This volume of IEEE Std 1003.1-2001 does not specify behavior of
    concurrent writes to a file from multiple processes. Applications
    should use some form of concurrency control.

The following fragment of code

    int fd;
    fd = open("exemple", O_CREAT | O_WRONLY | O_TRUNC, 0666);
    fork();
    write(fd, "Ouille", 6);
    close(fd);

produces "OuilleOuille", as expected, on ext4 on two machines running
Linux 3.2 AMD64.  However, over XFS on an old Pentium III at 500 MHz
running 2.6.32, it produces just "Ouille" roughly once in three times.

Sorry for not being able to give more test cases, but I cannot easily
change either the filesystem or the kernel on the Pentium server.

-- Juliusz Chroboczek

P.S. I'll appreciate being copied with any replies.

             reply	other threads:[~2012-10-15 21:50 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-15 21:36 Juliusz Chroboczek [this message]
2012-10-15 22:21 ` Write is not atomic? Max Filippov
2012-10-15 23:36   ` Juliusz Chroboczek
2012-10-15 23:13 ` Dave Chinner
2012-10-15 23:24   ` Philippe Troin
2012-10-15 23:42     ` Max Filippov
2012-10-15 23:40 ` Jochen Striepe
2012-10-16  6:21   ` Juliusz Chroboczek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7i391fto34.fsf@lanthane.pps.jussieu.fr \
    --to=jch@pps.jussieu.fr \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox