all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Paul Eggert <eggert@cs.ucla.edu>
To: Eli Zaretskii <eliz@gnu.org>
Cc: emacs-devel@gnu.org
Subject: Re: Locking files for CLASH_DETECTION now supported on MS-Windows
Date: Mon, 25 Feb 2013 22:05:15 -0800	[thread overview]
Message-ID: <512C509B.7000205@cs.ucla.edu> (raw)
In-Reply-To: <83d2vniuxv.fsf@gnu.org>

On 02/25/2013 08:02 PM, Eli Zaretskii wrote:> 

> On Windows, as long as a file is open, no
> other application can write to it or remove the file.

Is this true even if the file is network-mounted via NFS or CIFS?
I'd be surprised if it were true for NFS, as that's not the
standard NFS semantics.

> Is that the "atomic" nature you wanted?

Partly, but it's not sufficient.  I assume that one process can
read a file while another is writing to it, which means that
the readlink and symlink replacements may not be atomic.

>> Are readlink, symlink, and unlink atomic on MS-Windows?
> 
> Please define "atomic" for these cases, and I will think about that.

I mean that there's an abstract machine where a symbolic link is
either present or absent, and where readlink ("a", ...),
symlink ("b", "a"), and unlink ("a") either succeed or fail and affect
the abstract machine in an all-or-nothing way.  For example, if
the symbolic link doesn't exist and one process runs
symlink ("very long link contents", "a")
at the same time another process runs readlink ("a", buf, sizeof buf)
where buf is large enough, then the readlink should either fail
(no symlink present yet) or should succeed with
the buffer containing all the link contents; it shouldn't succeed with
partial contents such as "very long link co".



  parent reply	other threads:[~2013-02-26  6:05 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-25 17:43 Locking files for CLASH_DETECTION now supported on MS-Windows Eli Zaretskii
2013-02-25 18:05 ` Paul Eggert
2013-02-25 18:41   ` Eli Zaretskii
2013-02-25 18:56     ` Paul Eggert
2013-02-26  2:03       ` Paul Eggert
2013-02-26  2:43         ` Daniel Colascione
2013-02-26  3:23           ` Paul Eggert
2013-02-26  4:02         ` Eli Zaretskii
2013-02-26  4:28           ` Daniel Colascione
2013-02-26 17:45             ` Eli Zaretskii
2013-02-26  6:05           ` Paul Eggert [this message]
2013-02-26 18:41             ` Eli Zaretskii
2013-02-26 18:51               ` Eli Zaretskii
2013-02-26  4:00       ` Eli Zaretskii
2013-02-26  5:46         ` Paul Eggert
2013-02-26 18:02           ` Eli Zaretskii
2013-02-26 18:17       ` Eli Zaretskii
2013-02-26 22:34         ` Paul Eggert
2013-02-27  4:01           ` Eli Zaretskii
2013-02-27  7:45             ` Paul Eggert
2013-02-27 19:02               ` Eli Zaretskii
2013-02-27 19:01           ` Eli Zaretskii
2013-02-25 19:39     ` Glenn Morris
2013-02-25 19:43       ` Eli Zaretskii
2013-02-25 20:35   ` Stefan Monnier
2013-02-25 22:49     ` Paul Eggert
2013-02-26  3:49       ` Eli Zaretskii
2013-02-26 12:56       ` Richard Stallman
2013-02-26  3:40     ` Eli Zaretskii

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=512C509B.7000205@cs.ucla.edu \
    --to=eggert@cs.ucla.edu \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.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.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.