-
Notifications
You must be signed in to change notification settings - Fork 306
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
DAOS-16954 common: fix how the embedded value is deleted #15815
base: master
Are you sure you want to change the base?
Conversation
Signed-off-by: Jan Michalski <[email protected]>
In the previous commit, I made a mistake when fixing the embedded value case. Because it remained unnoticed, I think it is fair to say the current `btr_root_del_rec()` logic is a little confusing. With this commit, I hope to both fix my mistake and simplify the logic so this kind of mistake won't happen in the future. What is simplified: - if it is an embedded value destroy it straight away, - mostly restore the pre-embedded value logic without consideration for embedded values with one exception, - if the root is a leaf and there is more than one key remaining: - if there are exactly two keys and the embedded value is supported, the tree should be replaced with an embedded value. Since both: - deleting the embedded value and - deleting the last key from a regular tree, are the same a `btr_root_del_rec_last()` helper function has been introduced. Signed-off-by: Jan Michalski <[email protected]> Co-authored-by: Tomasz Gromadzki <[email protected]>
Ticket title is 'btree unit test SIGSEGV' |
Test stage Unit Test bdev on EL 8.8 completed with status UNSTABLE. https://build.hpdd.intel.com/job/daos-stack/job/daos//view/change-requests/job/PR-15815/1/testReport/ |
Test stage Unit Test bdev with memcheck on EL 8.8 completed with status UNSTABLE. https://build.hpdd.intel.com/job/daos-stack/job/daos//view/change-requests/job/PR-15815/1/testReport/ |
Test stage Unit Test on EL 8.8 completed with status UNSTABLE. https://build.hpdd.intel.com/job/daos-stack/job/daos//view/change-requests/job/PR-15815/1/testReport/ |
Test stage Unit Test with memcheck on EL 8.8 completed with status UNSTABLE. https://build.hpdd.intel.com/job/daos-stack/job/daos//view/change-requests/job/PR-15815/1/testReport/ |
When deleting the "root" record we cannot assume the
tr_node
offset points to a node since it can also point to an embedded value. So, we first have to consider the trace info or the tree flags to learn what the tree's "root" actually is.This patch also introduced a few readability changes and a few pieces of in-source documentation.
Before requesting gatekeeper:
Features:
(orTest-tag*
) commit pragma was used or there is a reason documented that there are no appropriate tags for this PR.Gatekeeper: