From: Jason Dillaman Date: Wed, 20 Mar 2019 18:40:50 +0000 (-0400) Subject: librbd: ignore -EOPNOTSUPP errors when retrieving image group membership X-Git-Tag: wip-pdonnell-testing-20200918.022351~1669^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ab720d4c0026d596dcea8782fbdd1640c93ec384;p=ceph-ci.git librbd: ignore -EOPNOTSUPP errors when retrieving image group membership The Luminous release did not support adding images to a group (it only included the bare-minimum support for creating groups). Commit f76df32666b incorrectly dropped support for ignoring this possible failure. This prevents Nautilus-release clients from opening images contained within a Luminous-release cluster. Fixes: http://tracker.ceph.com/issues/38834 Signed-off-by: Jason Dillaman (cherry picked from commit 6f29dc69a0db3b6d982c95ab9d3b9b00a7029e37) --- diff --git a/src/librbd/image/RefreshRequest.cc b/src/librbd/image/RefreshRequest.cc index 8679e179af6..8a93ee109b1 100644 --- a/src/librbd/image/RefreshRequest.cc +++ b/src/librbd/image/RefreshRequest.cc @@ -643,7 +643,7 @@ Context *RefreshRequest::handle_v2_get_group(int *result) { auto it = m_out_bl.cbegin(); cls_client::image_group_get_finish(&it, &m_group_spec); } - if (*result < 0) { + if (*result < 0 && *result != -EOPNOTSUPP) { lderr(cct) << "failed to retrieve group: " << cpp_strerror(*result) << dendl; return m_on_finish; diff --git a/src/test/librbd/image/test_mock_RefreshRequest.cc b/src/test/librbd/image/test_mock_RefreshRequest.cc index b871561e988..9e4fea44b3c 100644 --- a/src/test/librbd/image/test_mock_RefreshRequest.cc +++ b/src/test/librbd/image/test_mock_RefreshRequest.cc @@ -588,7 +588,7 @@ TEST_F(TestMockImageRefreshRequest, SuccessV2) { expect_get_metadata(mock_image_ctx, mock_get_metadata_request, RBD_INFO, {}, 0); expect_apply_metadata(mock_image_ctx, 0); - expect_get_group(mock_image_ctx, 0); + expect_get_group(mock_image_ctx, -EOPNOTSUPP); expect_refresh_parent_is_required(mock_refresh_parent_request, false); if (ictx->test_features(RBD_FEATURE_EXCLUSIVE_LOCK)) { expect_init_exclusive_lock(mock_image_ctx, mock_exclusive_lock, 0);