Skip to content

Commit

Permalink
Merge pull request #43568 from idryomov/wip-writesame-fua
Browse files Browse the repository at this point in the history
librbd: honor FUA op flag for write_same() in write-around cache

Reviewed-by: Mykola Golub <mgolub@suse.com>
Reviewed-by: Sunny Kumar <sunkumar@redhat.com>
  • Loading branch information
trociny committed Oct 22, 2021
2 parents 0deb744 + 0dcea09 commit b905c50
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 3 deletions.
4 changes: 2 additions & 2 deletions src/librbd/cache/WriteAroundObjectDispatch.cc
Expand Up @@ -113,8 +113,8 @@ bool WriteAroundObjectDispatch<I>::write_same(
ldout(cct, 20) << data_object_name(m_image_ctx, object_no) << " "
<< object_off << "~" << object_len << dendl;

return dispatch_io(object_no, object_off, object_len, 0, dispatch_result,
on_finish, on_dispatched);
return dispatch_io(object_no, object_off, object_len, op_flags,
dispatch_result, on_finish, on_dispatched);
}

template <typename I>
Expand Down
26 changes: 25 additions & 1 deletion src/test/librbd/cache/test_mock_WriteAroundObjectDispatch.cc
Expand Up @@ -651,7 +651,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, UnoptimizedIOBlockedIO) {
finish_ctx_ptr2->complete(0);
}

TEST_F(TestMockCacheWriteAroundObjectDispatch, FUA) {
TEST_F(TestMockCacheWriteAroundObjectDispatch, WriteFUA) {
librbd::ImageCtx *ictx;
ASSERT_EQ(0, open_image(m_image_name, &ictx));

Expand All @@ -675,5 +675,29 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, FUA) {
ASSERT_EQ(finish_ctx_ptr, &finish_ctx);
}

TEST_F(TestMockCacheWriteAroundObjectDispatch, WriteSameFUA) {
librbd::ImageCtx *ictx;
ASSERT_EQ(0, open_image(m_image_name, &ictx));

MockTestImageCtx mock_image_ctx(*ictx);
MockWriteAroundObjectDispatch object_dispatch(&mock_image_ctx, 16384, false);

InSequence seq;

bufferlist data;
data.append(std::string(512, '1'));

io::DispatchResult dispatch_result;
MockContext finish_ctx;
MockContext dispatch_ctx;
Context* finish_ctx_ptr = &finish_ctx;
ASSERT_FALSE(object_dispatch.write_same(0, 0, 8192, {{0, 8192}},
std::move(data), {},
LIBRADOS_OP_FLAG_FADVISE_FUA, {},
nullptr, nullptr, &dispatch_result,
&finish_ctx_ptr, &dispatch_ctx));
ASSERT_EQ(finish_ctx_ptr, &finish_ctx);
}

} // namespace cache
} // namespace librbd

0 comments on commit b905c50

Please sign in to comment.