-
Notifications
You must be signed in to change notification settings - Fork 5.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
os/bluestore/BlueStore.cc: merge overlapping/adjacent regions before read #24820
Conversation
src/test/objectstore/store_test.cc
Outdated
@@ -7359,13 +7359,14 @@ int main(int argc, char **argv) { | |||
g_ceph_context->_conf.set_val_or_die("filestore_op_thread_suicide_timeout", "10000"); | |||
//g_ceph_context->_conf.set_val_or_die("filestore_fiemap", "true"); | |||
g_ceph_context->_conf.set_val_or_die("bluestore_fsck_on_mkfs", "false"); | |||
g_ceph_context->_conf.set_val_or_die("bluestore_fsck_on_mount", "false"); | |||
g_ceph_context->_conf.set_val_or_die("bluestore_fsck_on_umount", "false"); | |||
g_ceph_context->_conf.set_val_or_die("bluestore_fsck_on_mount", "true"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are these config changes intentional? I think you should rather create a test case with these settings to reproduce the issue. But I suggest to refrain from changing the settings globally.
src/os/bluestore/BlueStore.cc
Outdated
uint64_t r_off = 0; | ||
uint64_t r_len = 0; | ||
bufferlist bl; | ||
std::list<region_t> regs; // original reqeusts |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
typo
src/os/bluestore/BlueStore.cc
Outdated
typedef list<region_t> regions2read_t; | ||
typedef map<BlueStore::BlobRef, regions2read_t> blobs2read_t; | ||
typedef list<read_req_t> merged_regions2read_t; | ||
typedef map<BlueStore::BlobRef, merged_regions2read_t> blob2mread_t; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
you may want to extend blobs2read_t instead of introducing one more map, e.g.
typedef map<BlueStore::BlobRef, pair<regions2read_t, merged_regions2read_t>>
Hence save on the second map operations(allocs, lookup etc)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok
@ifed01 done |
this change could be related to the test failures. dropping it from my test batch. |
…read Fixes: http://tracker.ceph.com/issues/36625 Signed-off-by: Yang Honggang <yanghonggang@umcloud.com>
After I refined the merge logical, all StoreTest cases are passed now.
|
* refs/pull/24820/head: os/bluestore/BlueStore.cc: merge overlapping/adjacent regions before read Reviewed-by: Igor Fedotov <ifedotov@suse.com>
Fixes: http://tracker.ceph.com/issues/36625
Signed-off-by: Yang Honggang yanghonggang@umcloud.com