Re: crc32 for erasure code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Sep 23, 2013 at 10:10 AM, Loic Dachary <loic@xxxxxxxxxxx> wrote:
>
>
> On 23/09/2013 18:59, Gregory Farnum wrote:
>> On Mon, Sep 23, 2013 at 1:34 AM, Loic Dachary <loic@xxxxxxxxxxx> wrote:
>>> Hi,
>>>
>>> Unless I'm mistaken, ceph_crc32() is currently used in master via the crc32c() method of bufferlist to:
>>>
>>> * encode_with_checksum/decode_with_checksum a PGLog entry
>>> * Message::decode_message/Message::encode_message a message via calc_*_crc
>>> * FileJournal::do_read_entry/FileJournal::prepare_single_write a journal entry
>>> * for information in the report monitory command ( Monitor.cc )
>>>
>>> Erasure coded chunks ( i.e. files ) will need checksums. Should this be implemented as an optional feature in ceph/src/os/FileStore.{h,cc} ? If the underlying filesystem does not provide this feature, FileStore would call ceph_crc32 each time the object is modified. A verification method would be exposed and used when scrubbing erasure coded pools.
>>
>> You mean should checksums be optional in the FileStore, or should we
>> provide a plugin framework for using things other than crc32, or...?
>> :)
>
> Not really. I was under the impression that crc32 is good enough. I'm not sure where ( in the code path ) it should be used for erasure coded pools. In the FileStore ? Or in the erasure code PG to set an attribute of the object ? The FileStore seems to be more sensible but ... I'm not sure hence the mail ;-)

Ah, I see. We currently use the CRC in two different ways:
1) For local and network checksums, making sure that what we read is
what was written — this is used in writing journal entries, and in
sending a message over the network, and lets us check for bit flips,
etc.
2) For comparing two different copies of any object during scrubbing
without shipping the whole object.

The first of these uses doesn't need any changing for erasure-coded
pools, which I believe means we don't need to change any of the
functions you've mentioned. However, we will need to do something else
for the second use case. Luckily we've already started that as it's in
the scrub code and part of the functionality split that's already
under way. :)
-Greg
Software Engineer #42 @ http://inktank.com | http://ceph.com
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux