Project

General

Profile

Subtask #4263

Feature #2770: krbd: define tasks to add osd_client compound class op support

Subtask #4127: kernel osd client: clearly separate read and write data buffers

libceph: clearly abstract message data operations

Added by Alex Elder about 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

Currently the fields in a message structure related
what constitutes the data portion of a message are
manipulated directly by code outside the messenger.

Create operations implemented by the messenger that
abstractly assign these fields, so the details of
their implementation are hidden inside the messenger.

This is a step toward changing how they're implemented.

History

#1 Updated by Alex Elder about 11 years ago

  • Status changed from In Progress to Fix Under Review

These patches have been posted for review.

[PATCH 0/4] libceph: abstract setting message data info
[PATCH 1/4] libceph: distinguish page array and pagelist count
[PATCH 2/4] libceph: set page alignment in start_request()
[PATCH 3/4] libceph: isolate message page field manipulation
[PATCH 4/4] libceph: isolate other message data fields

#2 Updated by Alex Elder about 11 years ago

This is partially done. These two have been committed:

ba1dd81 libceph: set page alignment in start_request()
46cac17 libceph: distinguish page array and pagelist count

The other two hit a snag. It turned out that a bio
pointer (or pages or whatever) can actually get set
more than once for a request if it gets re-sent. I
had been asserting that will never happen.

I can turn the assertion off for now until the
rest of the code gets in shape where it's possible
to make these assertions.

I think I'll be checking in a change like that (with
the assertions turned off) and I'll update this
at that time.

#3 Updated by Alex Elder about 11 years ago

OK, I have posted a new series for review, and in it, patches
1, 2, and 5 resolve this issue (and the last one even activates
the assertions that were failing before).

[PATCH 0/5] ceph: abstract message data information setting
[PATCH 1/5] libceph: isolate message page field manipulation
[PATCH 2/5] libceph: isolate other message data fields
[PATCH 3/5] ceph: only set message data pointers if non-empty
[PATCH 4/5] libceph: set response data fields earlier
[PATCH 5/5] libceph: activate message data assignment checks

#4 Updated by Alex Elder about 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 reviewed and are now committed to the
ceph-client "testing" branch.
634a072 libceph: isolate message page field manipulation
9c5f95a libceph: isolate other message data fields
d66d17f ceph: only set message data pointers if non-empty
c61ffd1 libceph: set response data fields earlier
00a1dc2 libceph: activate message data assignment checks

Also available in: Atom PDF