All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alex Elsayed <eternaleye@gmail.com>
To: linux-btrfs@vger.kernel.org
Subject: Re: [RFC PATCH] Btrfs: add sha256 checksum option
Date: Mon, 01 Dec 2014 11:28:22 -0800	[thread overview]
Message-ID: <m5ifgo$c1e$1@ger.gmane.org> (raw)
In-Reply-To: CAJBj3vekJ6B45SnbL_TSuCm6Z-YOX-B1XNPxUuJgu4Cy2b3y-A@mail.gmail.com

John Williams wrote:

> On Mon, Dec 1, 2014 at 9:42 AM, Austin S Hemmelgarn > Except most of
> the CPU optimized hashes aren't crypto hashes (other than the
>> various SHA implementations).  Furthermore, I've actually tested the
>> speed of a generic CRC32c implementation versus SHA-1 using the SHA
>> instructions on an UltraSPARC processor, and the difference ammounts to a
>> few microseconds in _favor_ of the optimized crypto hash; and I've run
>> the math for every other ISA that has instructions for computing SHA
>> hashes (I don't have the hardware for any of the others), and expect
>> similar results for those as well.
> 
> I think the confusion here is that I am talking about 128-bit and
> 256-bit hashes, which is what you would choose for filesystem
> checksums if you want to have extremely strong collision resistance
> (eg., you could also use it for dedup).
> 
> You seem to be talking about 32-bit (and maybe 64-bit) hashes.
> 
> The speed difference between crypto 128- and 256-bit hashes and
> non-crypto equivalents that I have mentioned is an order of magnitude
> or more.

I think there's a fundamental set of points being missed.

* The Crypto API can be used to access non-cryptographic hashes. Full stop.

* He was comparing CRC32 (a 32-bit non-cryptographic hash, *via the Crypto 
API*) against SHA-1 (a 128-bit cryptographic hash, via the Crypto API), and 
SHA-1 _still_ won. CRC32 tends to beat the pants off 128-bit non-
cryptographic hashes simply because those require multiple registers to 
store the state if nothing else; which makes this a rather strong argument 
that _hardware matters a heck of a lot_, quite possibly _more_ than the 
algorithm.

Even if SHA-1 in software is vastly slower than CityHash or whatever in 
software, the Crypto API implementation *may not be purely software*.

* The main benefit of the Crypto API is not any specific hash, it's that 
it's a _common API_ for _using any supported hash_.

* Your preferred non-cryptographic hashes can, thus, be used _via_ the 
Crypto API.

* This has benefits of:
    * Code reuse (for anyone else who wants to use such a hash).

    * Optimization opportunities (if a CPU implements some primitive, it can 
be leveraged in an arch-specific implementation, which the Crypto API will 
use _automatically_).

    * Flexibility (by using the Crypto API, _any_ supported hash can be used 
generically, so the _user_ can decide whether they want rather than a small, 
hard-coded menu of options in btrfs).


  reply	other threads:[~2014-12-01 19:28 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-24  5:23 [RFC PATCH] Btrfs: add sha256 checksum option Liu Bo
2014-11-24  5:23 ` [RFC PATCH] Btrfs-progs: support sha256 checksum algorithm Liu Bo
2014-11-24  8:23 ` [RFC PATCH] Btrfs: add sha256 checksum option Holger Hoffstätte
2014-11-24 18:55   ` Duncan
2014-11-24 19:34     ` John Williams
2014-11-25 10:30       ` Liu Bo
2014-11-25 10:52         ` Daniel Cegiełka
2014-11-25 23:17         ` John Williams
2014-11-26 12:50           ` Holger Hoffstätte
2014-11-26 17:53             ` John Williams
2014-11-25 10:28   ` Liu Bo
2014-11-24 20:07 ` Chris Mason
2014-11-24 20:58   ` Hugo Mills
2014-11-25  3:04     ` Qu Wenruo
2014-11-25  5:13     ` Zygo Blaxell
2014-11-25 11:30   ` Liu Bo
2014-11-26 13:36     ` Brendan Hide
2014-11-25 16:47   ` David Sterba
2014-11-25 19:45     ` Bardur Arantsson
2014-11-26 13:38     ` Brendan Hide
2014-11-26 13:58       ` Austin S Hemmelgarn
2014-12-01 18:37         ` David Sterba
2014-12-01 20:35           ` Austin S Hemmelgarn
2014-12-01 20:51             ` John Williams
2014-12-01 23:23               ` Alex Elsayed
2014-12-15 18:47                 ` David Sterba
2014-11-25 16:39 ` David Sterba
2014-11-27  3:52   ` Liu Bo
2014-12-01 18:51     ` David Sterba
2014-11-29 20:38   ` Alex Elsayed
2014-11-29 21:00     ` John Williams
2014-11-29 21:07       ` Alex Elsayed
2014-11-29 21:21         ` John Williams
2014-11-29 21:27           ` Alex Elsayed
2014-12-01 12:39           ` Austin S Hemmelgarn
2014-12-01 17:22             ` John Williams
2014-12-01 17:42               ` Austin S Hemmelgarn
2014-12-01 17:49                 ` John Williams
2014-12-01 19:28                   ` Alex Elsayed [this message]
2014-12-01 19:34                     ` Alex Elsayed
2014-12-01 20:26                       ` Austin S Hemmelgarn
2014-12-01 19:58                     ` John Williams
2014-12-01 20:04                       ` Alex Elsayed
2014-12-01 20:08                         ` Alex Elsayed
2014-12-01 20:46                           ` John Williams
2014-12-01 22:56                             ` Alex Elsayed
2014-12-01 23:05                             ` Alex Elsayed
2014-12-01 23:37                               ` John Williams
2014-12-01 23:46                                 ` Alex Elsayed
2014-12-02  0:03                                   ` John Williams
2014-12-02  0:15                                     ` Alex Elsayed
2014-12-02  0:30                                       ` John Williams
2014-12-02  0:34                                         ` Alex Elsayed
2014-12-02  0:11                                   ` John Williams
2014-12-01 23:48                               ` John Williams
2014-12-02  0:06                                 ` Alex Elsayed
2014-12-02  0:10                                   ` Alex Elsayed
2014-12-02  0:16                                   ` John Williams
2014-12-02  0:28       ` Christoph Anton Mitterer
2014-12-02  0:43         ` Alex Elsayed
2014-12-02  0:53           ` Christoph Anton Mitterer
2014-12-02  1:25             ` Alex Elsayed
2014-12-02  1:32               ` Alex Elsayed
2014-11-30 22:51     ` Christoph Anton Mitterer
2014-11-30 22:59     ` Christoph Anton Mitterer
2014-11-30 23:05       ` Dimitri John Ledkov
2014-12-01  2:55         ` Christoph Anton Mitterer

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='m5ifgo$c1e$1@ger.gmane.org' \
    --to=eternaleye@gmail.com \
    --cc=linux-btrfs@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 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.