From: Jamie Lokier <jamie@shareable.org>
To: Timo Sirainen <tss@iki.fi>
Cc: root@chaos.analogic.com,
Martin Konold <martin.konold@erfrakon.de>,
linux-kernel@vger.kernel.org
Subject: Re: Lockless file reading
Date: Thu, 28 Aug 2003 02:50:27 +0100 [thread overview]
Message-ID: <20030828015027.GA4715@mail.jlokier.co.uk> (raw)
In-Reply-To: <1062031942.1454.147.camel@hurina>
Timo Sirainen wrote:
> checksum[0]++;
> xor = buf[0] ^ checksum[0];
Your algorithm isn't going to work if the new value of xor is the same
as the old value of xor.
> do {
> memcpy(copy, buf, size*2);
> } while (!verify(copy, size));
> memcpy(data, copy, size);
It isn't safe because the memcpy() can read writes done on another
processor out of order, and xor does not always change.
You can read some of the newly written bytes in both the buf[] and
checksum[] halves of the buffer, while reading some of the previous
bytes in each half. If the set of new bytes in the first half matches
the set in the second half well enough (i.e. the two sets match for
bytes which aredifferent between the old and new data blocks), and the
xor values are the same between the old and new data blocks, then your
test will accept a mix of old and new data bytes.
-- Jamie
next prev parent reply other threads:[~2003-08-28 1:50 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-08-27 12:37 Timo Sirainen
2003-08-27 12:42 ` Martin Konold
2003-08-27 12:52 ` Timo Sirainen
2003-08-27 13:40 ` Richard B. Johnson
2003-08-27 14:56 ` Timo Sirainen
2003-08-27 23:39 ` Jamie Lokier
2003-08-28 0:52 ` Timo Sirainen
2003-08-27 18:42 ` Nagendra Singh Tomar
2003-08-28 8:40 ` Timo Sirainen
2003-08-27 21:15 ` Nagendra Singh Tomar
2003-08-28 9:35 ` Timo Sirainen
2003-08-27 21:52 ` Nagendra Singh Tomar
2003-08-28 13:26 ` Matthias Andree
2003-08-28 9:17 ` David Schwartz
2003-08-28 8:42 ` Valdis.Kletnieks
2003-08-28 20:13 ` David B. Stevens
2003-08-28 1:50 ` Jamie Lokier [this message]
2003-08-28 3:17 ` Timo Sirainen
2003-08-28 6:01 ` Valdis.Kletnieks
2003-08-28 6:13 ` Jamie Lokier
2003-08-28 8:57 ` Timo Sirainen
2003-08-28 9:56 ` David Schwartz
2003-08-28 10:26 ` Timo Sirainen
2003-08-27 22:58 ` Nagendra Singh Tomar
2003-08-28 12:18 ` Jamie Lokier
2003-08-28 0:39 ` Nagendra Singh Tomar
2003-08-28 13:00 ` Jamie Lokier
2003-08-28 1:06 ` Nagendra Singh Tomar
2003-08-28 21:49 ` Bernd Eckenfels
2003-08-28 12:01 ` Jamie Lokier
2003-08-28 13:28 ` Timo Sirainen
2003-08-28 20:24 ` David Schwartz
2003-08-28 12:44 ` Ragnar Hojland Espinosa
2003-08-28 13:03 ` Jamie Lokier
2003-08-28 17:26 ` root
2003-08-28 17:35 ` Jamie Lokier
2003-08-28 18:10 ` root
2003-08-28 21:59 ` Bernd Eckenfels
2003-08-28 23:02 ` Jamie Lokier
2003-08-28 23:44 ` Lockless file readingu root
2003-08-29 10:00 ` jlnance
2003-08-29 11:55 ` David Schwartz
2003-08-29 15:43 ` William Lee Irwin III
2003-08-28 20:37 ` Lockless file reading David Schwartz
2003-08-28 22:11 ` Bernd Eckenfels
2003-08-28 23:00 ` Jamie Lokier
2003-08-29 0:47 ` David Schwartz
2003-08-28 9:13 ` Martin Konold
2003-08-28 9:27 ` Timo Sirainen
2003-08-28 9:48 ` Martin Konold
2003-08-28 0:03 ` Jamie Lokier
2003-08-28 12:08 ` Richard B. Johnson
2003-08-28 12:39 ` Jamie Lokier
2003-08-28 10:08 ` Matthias Andree
2003-08-28 10:54 ` Robin Rosenberg
2003-08-28 12:42 ` Jamie Lokier
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=20030828015027.GA4715@mail.jlokier.co.uk \
--to=jamie@shareable.org \
--cc=linux-kernel@vger.kernel.org \
--cc=martin.konold@erfrakon.de \
--cc=root@chaos.analogic.com \
--cc=tss@iki.fi \
/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
all inboxes | Powered by JetHome®