Subtask #4127
closedFeature #2770: krbd: define tasks to add osd_client compound class op support
kernel osd client: clearly separate read and write data buffers
100%
Description
The osd client (and messenger) have generally speaking one
field representing either the data to be sent or the
data to be received for a given osd request.
As a specific example, there is a "pages" field (and a few
other related) that defines an array of pages. For a read
request, those pages contain data to be sent. For a write
request, those pages are where incoming data lands.
As a result, it is not always clear how they are going to
be used, and in a few cases the code is a little sloppy
about that. (Example: pages is passed to the request
message for a READ operation, and will never be used for
that, in ceph_osdc_start_request().)
It also means you can't use pages for both reading and
writing (or maybe you can, but this is not well defined
behavior).
In order to rearrange things to support sending data of
multiple types (pagelist, and bio, for example) in different
orders (pagelist then page array, specifically), this
needs to be sorted out.