Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

librbd: journal replay should honor inter-event dependencies #7019

Merged
merged 26 commits into from Jan 18, 2016

Conversation

dillaman
Copy link

AIO write/discard operations are not marked as committed until safely flushed to disk (explicitly or automatically after enough unflushed events build-up in replay). Simple maintenance operations (ones that cannot affect IO operations) are delayed until after the OpFinish event is processed. Complex maintenance operations (which can affect IO) are partially executed until the point where internal state is consistent before journal event processing continues.

@dillaman
Copy link
Author

@jdurgin some light reading for the New Year 😉

@jdurgin
Copy link
Member

jdurgin commented Dec 22, 2015

"only" 7k lines changed

@dillaman
Copy link
Author

@dachary looks like new Jenkin's slave needs more memory(?)

@ghost
Copy link

ghost commented Dec 22, 2015

@dillaman that would be a request for @alfredodeza or @andrewschoen. I don't know what kind of jenkins slaves are selected to run the bot.

@alfredodeza
Copy link
Contributor

a bummer, yes, I think we need to tweak this for more memory

@jdurgin
Copy link
Member

jdurgin commented Jan 14, 2016

lgtm once it runs through a rbd suite.
may want to make the low/high water mark configurable in the future

@dillaman
Copy link
Author

I'll kick off a suite run tomorrow.

Jason Dillaman added 18 commits January 15, 2016 10:40
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
In general, the op shoud only start after the jouranl event is
safely committed.  Snapshot create and resize need special treatment
to record the event while no IO is in-progress.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
This will permit unit testing and will facilitate proper
serialization of requests (when necessary).

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Properly track when AIO operations are safely committed to
disk before marking the journal events are committed.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Jason Dillaman added 8 commits January 15, 2016 10:40
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
After snap create has blocked IO and after resize has ensured clipped
IO boundaries, they will resume the playback of journal events.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
@dillaman
Copy link
Author

jdurgin added a commit that referenced this pull request Jan 18, 2016
librbd: journal replay should honor inter-event dependencies

Reviewed-by: Josh Durgin <jdurgin@redhat.com>
@jdurgin jdurgin merged commit dda9a08 into ceph:master Jan 18, 2016
@dillaman dillaman deleted the wip-14006 branch January 18, 2016 22:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants