From 7ca1bab90f3db3aaaa4cdbfc1f18e9f5cfbf5568 Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Thu, 14 Feb 2019 09:53:34 -0500 Subject: [PATCH] librbd: align discard requests to default bluestore allocation size This will match the new krbd behavior of aligning discards to the default bluestore minimum allocation size. Requests that are too small (or the misaligned head / tail of the request) will be ignored since it will not result in freed space. Fixes: http://tracker.ceph.com/issues/38146 Signed-off-by: Jason Dillaman --- src/common/options.cc | 16 +++ src/librbd/ImageCtx.cc | 5 + src/librbd/ImageCtx.h | 2 +- src/librbd/cache/ImageCache.h | 3 +- src/librbd/cache/ImageWriteback.cc | 6 +- src/librbd/cache/ImageWriteback.h | 2 +- src/librbd/cache/PassthroughImageCache.cc | 6 +- src/librbd/cache/PassthroughImageCache.h | 3 +- src/librbd/io/ImageDispatchSpec.cc | 2 +- src/librbd/io/ImageDispatchSpec.h | 12 +- src/librbd/io/ImageRequest.cc | 80 ++++++++++--- src/librbd/io/ImageRequest.h | 23 ++-- src/librbd/io/ImageRequestWQ.cc | 11 +- src/librbd/io/ImageRequestWQ.h | 5 +- src/librbd/io/ObjectRequest.cc | 15 --- src/librbd/io/ObjectRequest.h | 2 - src/librbd/io/Types.h | 3 +- src/librbd/journal/Replay.cc | 2 +- src/librbd/journal/Types.cc | 22 +++- src/librbd/journal/Types.h | 14 ++- src/librbd/librbd.cc | 20 ++-- .../deep_copy/test_mock_ObjectCopyRequest.cc | 6 +- src/test/librbd/io/test_mock_ImageRequest.cc | 107 +++++++++++++++++- src/test/librbd/io/test_mock_ObjectRequest.cc | 31 ----- src/test/librbd/journal/test_Entries.cc | 3 +- src/test/librbd/journal/test_Replay.cc | 16 +-- src/test/librbd/journal/test_mock_Replay.cc | 39 ++++--- src/test/librbd/mock/MockImageCtx.h | 2 + src/test/librbd/mock/cache/MockImageCache.h | 2 +- src/test/librbd/test_Migration.cc | 4 +- src/test/rbd_mirror/test_ImageSync.cc | 9 +- .../rbd_mirror/test_mock_ImageReplayer.cc | 2 +- 32 files changed, 321 insertions(+), 154 deletions(-) diff --git a/src/common/options.cc b/src/common/options.cc index e5752c2a2f0..d7140d76b11 100644 --- a/src/common/options.cc +++ b/src/common/options.cc @@ -7074,6 +7074,22 @@ static std::vector