Skip to content

bluestore: Elastic Shared Blobs 2 - move BufferSpace#51440

Closed
aclamk wants to merge 21 commits intoceph:mainfrom
aclamk:wip-aclamk-bs-esb-2-move-bufferspace
Closed

bluestore: Elastic Shared Blobs 2 - move BufferSpace#51440
aclamk wants to merge 21 commits intoceph:mainfrom
aclamk:wip-aclamk-bs-esb-2-move-bufferspace

Conversation

@aclamk
Copy link
Contributor

@aclamk aclamk commented May 11, 2023

This is part 2/4 of ESB work.
It executes move of BufferSpace from SharedBlob to Blob.
It is necessary for elastic shared blob logic, but cannot be turn on / off in runtime.
#51439
#51440
#51441
#51442

Contribution Guidelines

Checklist

  • Tracker (select at least one)
    • References tracker ticket
    • Very recent bug; references commit where it was introduced
    • New feature (ticket optional)
    • Doc update (no ticket needed)
    • Code cleanup (no ticket needed)
  • Component impact
    • Affects Dashboard, opened tracker ticket
    • Affects Orchestrator, opened tracker ticket
    • No impact that needs to be tracked
  • Documentation (select at least one)
    • Updates relevant documentation
    • No doc update is appropriate
  • Tests (select at least one)
Show available Jenkins commands
  • jenkins retest this please
  • jenkins test classic perf
  • jenkins test crimson perf
  • jenkins test signed
  • jenkins test make check
  • jenkins test make check arm64
  • jenkins test submodules
  • jenkins test dashboard
  • jenkins test dashboard cephadm
  • jenkins test api
  • jenkins test docs
  • jenkins render docs
  • jenkins test ceph-volume all
  • jenkins test ceph-volume tox
  • jenkins test windows

aclamk and others added 4 commits May 10, 2023 11:47
After introduction of lazy statfs updates and mechanism to store them at exit,
some tests required tune-up.

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
Fix it, so it can be enabled and work.

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
Add more checks on consistency.

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
Upgrade local foreach_shared_blob into _fsck_foreach_shared_blob
that can be used on entire BlueStore scope.

Signed-off-by: Adam Kupczyk <akupczyk@redhat.com>
@ifed01
Copy link
Contributor

ifed01 commented May 15, 2023

jenkins test make check

@aclamk aclamk force-pushed the wip-aclamk-bs-esb-2-move-bufferspace branch from 57f2bd4 to e8ef699 Compare May 30, 2023 08:30
@aclamk aclamk requested a review from ifed01 May 30, 2023 08:38
@aclamk
Copy link
Contributor Author

aclamk commented May 30, 2023

@ifed01 Got rid of #ifdef WITH_ESB, last 3 commits are changed.

aclamk and others added 12 commits June 27, 2023 15:25
When we do fsck with non-repair mode, we do not get any info about shared blobs
that actually were corrupted. Now we print them.

Signed-off-by: Adam Kupczyk <akupczyk@redhat.com>
Make faster exit when sharding not enabled.

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
When reshard is applied for the first time, expand reshard range to encompas whole object.

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
maybe_reshard is created to filter out unnecessary calls to request_reshard.
The intended use is to let just request maybe_reshard, and delegate check
if the action is really necessary to the implementation detail level.

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
When encode_some fails twice ceph aborts.
Now we print object details just before.

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
Modifed bluestore_blob_t to include current size of csum_data.

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
Add printing of len to operator<< for const bluestore_blob_t.

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
Modified TransContext.
Changed
std::set<SharedBlobRef> shared_blobs_written
to
std::set<BlobRef> blobs_written

Signed-off-by: Adam Kupczyk <akupczyk@redhat.com>
Move finish_write from SharedBlob to Blob.

Signed-off-by: Adam Kupczyk <akupczyk@redhat.com>
This is necessary to enable adding more Buffers to Blobs that are shared.

Signed-off-by: Adam Kupczyk <akupczyk@redhat.com>
Adapt split_cache to new situation.

Now buffers are attached to Blob, and we need always move them,
regardless that we already moved relevant SharedBlob.

Signed-off-by: Adam Kupczyk <akupczyk@redhat.com>
aclamk and others added 5 commits June 27, 2023 15:39
Fix blobs having the same empty shared blob.

Each blob on creation gets its own unique (empty) SharedBlob object.
ExtentMap::dup() sometimes merges blobs together, so 2 different blobs
get the same SharedBlob object.

Function _do_remove() tries to convert shared blobs into regular ones.
If it succeeds we could get 2 blobs having the same EMPTY SharedBlob object.

The solution is to create detached SharedBlob if necessary.

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
With BufferSpace now attached to Blob (was SharedBlob inside it),
on-the-fly 'writing' buffers must be copied to clones.
Otherwise those objects will read data from disk before it is written there.

Signed-off-by: Adam Kupczyk <akupczyk@redhat.com>
_dup_writing requires locking of BufferCacheShard

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
By moving BufferSpace from SharedBlob to Blob tracking of num_blobs get broken.
Fixed that and reinforced by adding asserts to BufferCacheShard destructor.

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
@aclamk aclamk force-pushed the wip-aclamk-bs-esb-2-move-bufferspace branch from e8ef699 to 8383201 Compare June 27, 2023 15:40
@rzarzynski
Copy link
Contributor

Merged as a part of #53178.

@rzarzynski rzarzynski closed this Sep 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants