Conversation
Split object data into segments of conf.bluestore_segment_data_size bytes. This means that no blob will be in two segments at the same time. Modified reshard function to prefer segment separation lines. As a result no spanning blobs are created. Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
New segment_size pool option creates segmentation in BlueStore Onodes. This simplifies metadata encoding. Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
+ adapt to new "segment_size" pool option Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
|
Recreation of #53794 |
| p2roundup<uint64_t>(write_offset + 1, segment_size), | ||
| middle_offset + middle_length); | ||
| _do_write_big(txc, c, o, write_offset, segment_end - write_offset, p, wctx); | ||
| write_offset = segment_end; |
There was a problem hiding this comment.
Need to adjust middle_length here as well
| @@ -3580,6 +3581,7 @@ void BlueStore::ExtentMap::reshard( | |||
| dout(20) << __func__ << " spanning blob " << p.first << " " << *p.second | |||
There was a problem hiding this comment.
as you're touching this code anyway - mind to wrap this loop with
if (!cct->_conf->subsys.should_gather<ceph_subsys_bluestore, 20>())
?
| << ", slop " << slop << dendl; | ||
|
|
||
| uint32_t next_boundary = segment_size; | ||
| uint32_t encoded_segment_estimate = /* bytes * (segment_size / (needs_reshard_end - needs_reshard_begin)) */ |
| uint32_t encoded_segment_estimate = /* bytes * (segment_size / (needs_reshard_end - needs_reshard_begin)) */ | ||
| bytes * segment_size / (data_reshard_end - needs_reshard_begin); | ||
|
|
||
| bool onode_data_has_boundaries = (segment_size != 0); |
|
This pull request has been automatically marked as stale because it has not had any activity for 60 days. It will be closed if no further activity occurs for another 30 days. |
|
This pull request has been automatically closed because there has been no activity for 90 days. Please feel free to reopen this pull request (or open a new one) if the proposed change is still appropriate. Thank you for your contribution! |
Contribution Guidelines
To sign and title your commits, please refer to Submitting Patches to Ceph.
If you are submitting a fix for a stable branch (e.g. "quincy"), please refer to Submitting Patches to Ceph - Backports for the proper workflow.
When filling out the below checklist, you may click boxes directly in the GitHub web UI. When entering or editing the entire PR message in the GitHub web UI editor, you may also select a checklist item by adding an
xbetween the brackets:[x]. Spaces and capitalization matter when checking off items this way.Checklist
Show available Jenkins commands
jenkins retest this pleasejenkins test classic perfjenkins test crimson perfjenkins test signedjenkins test make checkjenkins test make check arm64jenkins test submodulesjenkins test dashboardjenkins test dashboard cephadmjenkins test apijenkins test docsjenkins render docsjenkins test ceph-volume alljenkins test ceph-volume toxjenkins test windowsjenkins test rook e2e