]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
osd: restructure op_shardedwq 13343/head
authorSage Weil <sage@redhat.com>
Mon, 20 Feb 2017 16:49:08 +0000 (11:49 -0500)
committerSage Weil <sage@redhat.com>
Sat, 25 Feb 2017 04:22:19 +0000 (23:22 -0500)
commit3cc48278bf0ee5c9535d04b60a661f988c50063b
tree5151ffe51e20c18835bae9317113ac4430d7da1f
parent24d70aff6b51e27b6b2c478b2182829daf804a96
osd: restructure op_shardedwq

This is difficult to break into pieces, so one big fat commit it is.

A few trivial bits

- include epoch in PGQueueable.
- PGQueuable operator<<
- remove op_wq ref from OSDService; use simple set of queue methods instead

The big stuff:

- Fast dispatch now passes messages directly to the queue based on an
spg_t.  The exception is MOSDOp's from legacy clients.  We add a
waiting_for_map mechanism on the front-side that is similar to but simpler
than the previous one so that we can map those legacy requests to an
accurate spg_t.
- The dequeue path now has a waiting_for_pg mechanism.  It also uses a
much simpler set of data structures that should make it much faster than
the previous incarnation.
- Shutdown works a bit differently; we drain the queue instead of trying
to remove work for individual PGs.  This lets us remove the dequeue_pg
machinery.

Signed-off-by: Sage Weil <sage@redhat.com>
src/common/config_opts.h
src/osd/OSD.cc
src/osd/OSD.h
src/osd/OSDMap.h
src/osd/OpRequest.cc
src/osd/OpRequest.h
src/osd/PG.cc
src/osd/PG.h
src/osd/PrimaryLogPG.cc
src/osd/Session.h