Project

General

Profile

Subtask #4657

Feature #3761: kernel messenger: need to support multiple ops per request

libceph: have each op describe its own data

Added by Alex Elder almost 11 years ago. Updated almost 11 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
Target version:
% Done:

0%

Source:
Development
Tags:
Backport:
Reviewed:
Affected Versions:
Pull request ID:

Description

Each osd request has an array of osd operations (ops). Each
op can have a data item associated with it.

Currently, an op has either no data, one data item for outgoing
data (like a write), one data item for incoming data (like a
read), or one outgoing and one incoming data item (object class
method call).

And currently, no osd request ever needs more than one op that
has data. So it's sufficient to maintain just two data items
for all requests--one for outgoing data, and one for incoming.

We need more than that to suppot layering, though. And to
match what we need, each op should maintain its own data item
information rather than sharing them among all ops in a request.

So we need to arrange things so each op defines the one or
more data items it needs. Then the information about them
needs to be transferred to the request or response message
so it can be processed by the messenger.

This work has been underway but it is (or was) worthy of
its own separate description, so I've done that after the
fact, here...

History

#1 Updated by Alex Elder almost 11 years ago

The following patches have been posted for review:

[PATCH 10/20] libceph: add data pointers in osd op structures
[PATCH 11/20] libceph: specify osd op by index in request

[PATCH 16/20] libceph: move ceph_osdc_build_request()
[PATCH 17/20] libceph: set message data when building osd request
[PATCH 18/20] libceph: combine initializing and setting osd data
[PATCH 19/20] libceph: set the data pointers when encoding ops
[PATCH 20/20] libceph: kill off osd request r_data_in and r_data_out

#2 Updated by Alex Elder almost 11 years ago

  • Status changed from In Progress to Fix Under Review

Out for review.

#3 Updated by Alex Elder almost 11 years ago

  • Status changed from Fix Under Review to Resolved
  • translation missing: en.field_remaining_hours set to 0.00

The following have been committed to the "testing" branch
of the ceph-client git repository:

73b4c46 libceph: add data pointers in osd op structures
aeb0667 libceph: specify osd op by index in request
ea03e08 libceph: move ceph_osdc_build_request()
6fb62ee libceph: set message data when building osd request
a40f1b5 libceph: combine initializing and setting osd data
3798d49 libceph: set the data pointers when encoding ops
5a16a42 libceph: kill off osd request r_data_in and r_data_out

Also available in: Atom PDF