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 #4854
Conversation
9a5427f
to
78afe97
Compare
Passed RBD teuthology suite |
@dillaman it would be good to have comments in the commit messages regarding conflict resolution (reminder ;-) |
78afe97
to
0c665d0
Compare
@dillaman would you be so kind as to rebase & re-push this PR so that it triggers the make check bot ? I do not remember why I changed to DNM, I suspect it's just because it failed compilation in the integration branch. But I failed to mention the reason for the change. |
…gleton If some objects associated to CephContext want to create a singleton object, it can inherit AssociatedSingletonObject and implement destruction to get notified. Signed-off-by: Haomai Wang <haomaiwang@gmail.com> (cherry picked from commit 7fed5de)
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) Conflicts: src/common/WorkQueue.h: trivial resolution
Signed-off-by: Jason Dillaman <dillaman@redhat.com> (cherry picked from commit b3f5a75)
Signed-off-by: Jason Dillaman <dillaman@redhat.com> (cherry picked from commit afb896d) Conflicts: src/common/config_opts.h: trivial resolution src/librbd/ImageCtx.cc: trivial resolution src/librbd/ImageCtx.h: trivial resolution src/librbd/internal.cc: trivial resolution
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) Conflicts: src/librbd/librbd.cc: trivial resolution
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) Conflicts: src/librbd/AioCompletion.cc: trivial resolution src/librbd/AioCompletion.h: trivial resolution
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)
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 src/librbd/internal.h: trivial resolution
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/AioRequest.h: trivial resolution src/librbd/internal.cc: trivial resolution
Signed-off-by: Jason Dillaman <dillaman@redhat.com> Conflicts: src/test/librbd/test_librbd.cc: trivial resolution
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
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) Conflicts: src/common/config_opts.h: trivial resolution src/librbd/librbd.cc: trivial resolution
Signed-off-by: Jason Dillaman <dillaman@redhat.com> (cherry picked from commit 4cf4148)
0c665d0
to
4a709a4
Compare
@dachary Rebased and pushed. @smithfarm This fix is actually already available within the downstream Red Hat Ceph Storage 1.2.x product, so the sooner we can get it in upstream, the better in my humble opinion. |
@dillaman is the patch id of all the commits the same ? How much testing did it see ? |
@dillaman: JFYI the tracker issue says "DNM until Josh provides +1" |
@jdurgin Thoughts? |
(We will run integration tests on this before merging it in any case.) |
@dillaman @smithfarm my concern here is to avoid having a significant amount of commits that look like they are different in hammer and in another context (redhat or suse product), because of tiny differences that change the patch id. For all intent and purposes such commits are the same but from the point of view of a tool, they are different (git cherry will find them different) and it takes a human being to compare them and decide the difference is not significant. If the commits that exist elsewhere did not see much testing and have not been released yet, the commits from this pull request could probably just be used to replace them. If the commits that exist elsewhere have been extensively tested, and if their patch-id is different, it is very little effort to update this pull request with them (replace the current ones), for the sake of having a clean history. Hopefully that clarifies a little the context in which I asked "is the patch id of all the commits the same ? How much testing did it see ? ". Sorry for being so terse ;-) P.S. See also http://www.spinics.net/lists/ceph-devel/msg24489.html |
All but two commits have the same patch-id in v0.80.8.2. The reason for these divergences are explained in the "reconciliation between firefly and v0.80.8.2" mail on ceph-devel. |
@smithfarm no further comment, all is well :-) |
No problems from this in master. Looks good to me once it passes through the rbd suite. Generally you can assume that for trivial backports, or ones with just trivial conflicts, I'm fine with merging them after an rbd suite run. |
@jdurgin: it passed the rbd suite. OK to merge? ( see http://tracker.ceph.com/issues/11644#rbd ) |
@smithfarm yup, lgtm |
librbd: aio calls may block Reviewed-by: Josh Durgin <jdurgin@redhat.com>
http://tracker.ceph.com/issues/11769