]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
SimpleRADOSStriper: add new minimal async striper
authorPatrick Donnelly <pdonnell@redhat.com>
Thu, 28 Jan 2021 23:04:01 +0000 (15:04 -0800)
committerPatrick Donnelly <pdonnell@redhat.com>
Fri, 19 Mar 2021 15:52:55 +0000 (08:52 -0700)
commit9d82cc629dff505403a5040595eb0773384992e8
treea6dbd8150daf4abdfac154667725415281a0fa5c
parent108f486afe772dff771137a13b33887e5bc2a55e
SimpleRADOSStriper: add new minimal async striper

This was developed because the two other striper implementations were
unsuitable for libcephsqlite:

- libradosstriper: while the async APIs exist, its current protocol
  requires synchronously locking an object for every write/read whether
  that operation is async or not. For this reason, it's too far too slow
  for latency sensitive applications.

- osdc/Filer: this requires the object name to be an inode number. It
  also comes with other overhead burden which is not necessary for
  libcephsqlite including caching/buffering.

SimpleRADOSStriper aims to be a minimalistic heavily asynchronous
striper. One way it achieves this is through the use of exclusive locks
to protect access to the striped objects. Most metadata updates are
deferred until the striped file is unlocked, flushed, (or closed). All
reads/writes are asynchronous (but a read implicitly gathers async
striped reads for each op).  Writes are not buffered. Reads are not
cached. There is no readahead.

SimpleRADOSStriper aims to be compatible with the rados binary --striper
option for extracting files out of RADOS but it should not be used
otherwise.

Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
src/SimpleRADOSStriper.cc [new file with mode: 0644]
src/SimpleRADOSStriper.h [new file with mode: 0644]