From: "David Dabbs" <david@dabbs.net>
To: 'Nikita Danilov' <nikita@clusterfs.com>
Cc: reiserfs-list@namesys.com
Subject: RE: Performance improvements to key comparison functions
Date: Tue, 13 Jul 2004 12:58:06 -0500 [thread overview]
Message-ID: <20040713175848.6998215E19@mail03.powweb.com> (raw)
In-Reply-To: <16626.32086.481761.496932@gargle.gargle.HOWL>
> Nikita wrote
>
> I see now. Problem is that znode->version is protected by long-term lock
> itself. That is, invariant
>
> "znode content change implies znode->version bump"
>
> is maintained under long-term lock on znode. In particular, following
> sequence of actions is valid:
>
> (1) obtain long term lock on znode Z
>
> (2) modify Z's content
>
> (3) bump Z->version
>
> (4) modify Z's content again
>
> (5) release long-term lock (without increasing Z->version for the second
> time)
>
> If first call to z_c_k_s() happens between (3) and (4), re-checking
> ->version is not enough.
>
[David Dabbs]
Thanks. I figured there was a concurrency issue.
Another question. Is it an invariant that all key values, whether persisted
to disk or in-memory only, are stored in little-endian order? Specifically
I'm thinking of key values used when searching the (a) tree. Seems like they
must be, as the key comparison functions call d64tocpu() when operating on
all key parameters.
If this is the case, one can test for equivalence using each datum (on both
big- and little-endian machines) and only call __swab64 (d64tocpu) when one
needs to evaluate the difference between two architecture-native values.
Something like
if(k1->el[0].datum != k1->el[0].datum)
return (d64tocpu(k1, 0) < (d64tocpu(k2, 0);
Bits are bits, right - at least when testing equivalence? This would have no
effect on little-endian architectures, but for big-endian shouldn't this
'deferred swabbing' improve things?
David
next prev parent reply other threads:[~2004-07-13 17:58 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-07-12 18:38 Performance improvements to key comparison functions David Dabbs
2004-07-12 20:04 ` Nikita Danilov
2004-07-12 20:26 ` David Dabbs
2004-07-10 23:18 ` Nikita Danilov
2004-07-12 21:27 ` David Dabbs
2004-07-11 0:01 ` Nikita Danilov
2004-07-12 22:03 ` David Dabbs
2004-07-12 12:00 ` Nikita Danilov
2004-07-13 17:58 ` David Dabbs [this message]
2004-07-12 20:49 ` David Dabbs
2004-07-10 23:23 ` Nikita Danilov
2004-07-12 21:07 ` mjt
2004-07-13 18:19 ` Hans Reiser
2004-07-12 21:42 ` Philippe Gramoullé
-- strict thread matches above, loose matches on Subject: below --
2004-07-12 8:48 David Dabbs
2004-07-13 18:33 ` Hans Reiser
2004-07-13 19:59 ` David Dabbs
2004-07-14 6:59 ` Hans Reiser
2004-06-22 10:53 ` David Dabbs
2004-07-13 22:18 ` David Dabbs
2004-07-14 7:03 ` Hans Reiser
2004-06-23 8:43 David Dabbs
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=20040713175848.6998215E19@mail03.powweb.com \
--to=david@dabbs.net \
--cc=nikita@clusterfs.com \
--cc=reiserfs-list@namesys.com \
/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 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.