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: aio calls may block #4875

Merged
12 commits merged into from Jul 8, 2015

Conversation

Projects
None yet
3 participants
@dillaman
Contributor

dillaman commented Jun 5, 2015

dillaman added some commits Apr 8, 2015

WorkQueue: add new ContextWQ work queue
The queue holds a collection of Context pointers that will
be completed by the thread pool.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit 24a33e9)
WorkQueue: added virtual destructor
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit b3f5a75)

@dillaman dillaman added this to the hammer milestone Jun 5, 2015

@ghost

This comment has been minimized.

ghost commented Jun 5, 2015

@dillaman would you mind adding an explanation of how you resolved the conflict at 9fa3039, adf7d70, 3e157fd, 24c0e08, 5331b2f ? I found that to be quite helpful. Of course the always is the possibility of comparing the diffs to see what have changed, but except for trivial conflicts knowing can help.

@ghost ghost self-assigned this Jun 7, 2015

@dillaman

This comment has been minimized.

Contributor

dillaman commented Jun 8, 2015

@dachary Do you have a good example of this? Since these changes were basically to correct overzealous code insertions from git and not logic changes, I am struggling to figure out how to properly describe the changes.

@ghost

This comment has been minimized.

ghost commented Jun 8, 2015

@dillaman if that's trivial I would just mention trivial rebase and the reader knows there is nothing to worry about in the conflict zone. e1d5773 has an example of non trivial resolution comment. c0cfd6e a comment that could have been trivial rebase but I started at the difference for a few minutes before seeing the ++ inversion so I felt the need to mention it ;-)

@ghost

This comment has been minimized.

ghost commented Jun 8, 2015

or trivial resolution instead of trivial rebase maybe ?

dillaman added some commits Apr 8, 2015

librbd: add task pool / work queue for requests
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit afb896d)

Conflicts:
	src/librbd/ImageCtx.cc: trivial resolution
	src/librbd/ImageCtx.h: trivial resolution
librbd: avoid blocking AIO API methods
Enqueue all AIO API methods within the new librbd thread pool to
reduce the possibility of any blocking operations. To maintain
backwards compatibility with the legacy return codes of the API's
AIO methods, it's still possible to block attempting to acquire
the snap_lock.

Fixes: #11056
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit 3a7b5e3)
librbd: add new fail method to AioCompletion
Helper method to handle passing fatal errors generated within
librbd (not from the OSDs) back to the client.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit 6d1d0c8)
librbd: internal AIO methods no longer return result
All failures should be returned via the AioCompletion.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit 9ab42d6)

Conflicts:
	src/librbd/AioRequest.cc: trivial resolution
	src/librbd/internal.cc: trivial resolution
Throttle: added pending_error method to SimpleThrottle
Allow the client of SimpleThrottle to detect an async error
so that it can exit early.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit b88b88c)
tests: update librbd AIO tests to remove result code
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit 948b15e)

Conflicts:
	src/test/librbd/test_internal.cc: trivial resolution
	src/test/librbd/test_librbd.cc: trivial resolution
librbd: AioRequest::send no longer returns a result
The librados calls used by AioRequest::send should always return
zero unless there is a bug.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit c77bce3)

Conflicts:
	src/librbd/AioRequest.cc: trivial resolution
	src/librbd/AsyncFlattenRequest.cc: trivial resolution
PendingReleaseNotes: document changes to librbd's aio_read methods
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
librbd: new rbd_non_blocking_aio config option
Setting this option to false reverts librbd to legacy behavior
where AIO operations could potentially block.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit 769cad1)
tests: verify librbd blocking aio code path
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit 4cf4148)

Conflicts:
	src/test/librbd/test_librbd.cc: trival resolution

@dillaman dillaman changed the title from [DNM] librbd: aio calls may block to librbd: aio calls may block Jun 11, 2015

@dillaman

This comment has been minimized.

Contributor

dillaman commented Jun 11, 2015

Passed RBD teuthology suite

@theanalyst

This comment has been minimized.

Member

theanalyst commented Jul 6, 2015

This pr has passed the first run of integration tests for hammer-backports tracked at http://tracker.ceph.com/issues/11990#rbd. @dachary / @dillaman Do you think it is ready to merge

@dillaman

This comment has been minimized.

Contributor

dillaman commented Jul 6, 2015

👍

ghost pushed a commit that referenced this pull request Jul 8, 2015

Loic Dachary
Merge pull request #4875 from ceph/wip-11770-hammer
librbd: aio calls may block

Reviewed-by: Jason Dillaman <dillaman@redhat.com>
Reviewed-by: Loic Dachary <ldachary@redhat.com>

@ghost ghost merged commit 5696b0f into hammer Jul 8, 2015

@dillaman dillaman deleted the wip-11770-hammer branch Sep 7, 2015

This issue was closed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment