os/bluestore: get rid off statfs update on each txc#46036
os/bluestore: get rid off statfs update on each txc#46036
Conversation
d1fc3de to
fdfe29a
Compare
|
jenkins test make check |
aclamk
left a comment
There was a problem hiding this comment.
This is great stuff.
I think refactor of decode_some should be made differently, but I am open to discussion.
| } catch (ceph::buffer::error& e) { | ||
| derr << "fsck error: failed to decode Pool StatFS record" | ||
| << pretty_binary_string(key) << dendl; | ||
| string key; |
There was a problem hiding this comment.
I feel like we can make check/repair statfs much simpler.
We could create a map of {key->stat} from the stats we just scanned.
This should be ideally reflected by state of DB.
If DB does not have something - we complain and add (in repair mode).
If DB has different value - we complain and fix (in repair mode).
If DB has extra key - we complain and delete (in repair mode).
There was a problem hiding this comment.
The tricky thing is that now we might have statfs persisted at DB in two different ways depending on the previous shutdown: graceful or not. This implementation checks in-memory stats (loaded either from relevant DB records or via recovery) vs. stats loaded by fsck.
For your suggestion we'll need to perform DB update immediately after the recovery and then de-serialize it back for fsck (and then finally update DB once again on a shutdown). Which doesn't make much sense to me...
7032f8a to
3301422
Compare
3301422 to
d088026
Compare
|
@aclamk - I think I resolved most of you comments and responded to the rest, would you take another look? |
aclamk
left a comment
There was a problem hiding this comment.
Strangely, I found no errors.
I wonder how many times you recheck it yourself Igor.
d088026 to
54ec858
Compare
|
jenkins test make check |
3 similar comments
|
jenkins test make check |
|
jenkins test make check |
|
jenkins test make check |
7286b73 to
350bbf0
Compare
|
jenkins test make check |
|
@aclamk - mind taking another look? |
aclamk
left a comment
There was a problem hiding this comment.
I thought I already approved this.
I already have some cleanup work that depends on this one.
|
Teuthology Test Result @ifed01 Across both the runs from the link above, the following failed jobIDs appear to be related to this PR. The tests are thrashosds related and in each case the failure is due to an osd not coming up after being restarted due to fsck errors being reported by _fsck_check_statfs(). Could you please take a look? Some logs from JobID: 6978863 |
|
Per @sseshasa "@yuriweinstein I looked into the pending jobIDs (as mentioned by @Nehaojha ) and all the other failures reported in the re-run (http://pulpito.front.sepia.ceph.com/lflores-2022-08-19_21:39:29-rados-wip-yuri5-testing-2022-08-18-0812-distro-default-smithi/). Except for PR: os/bluestore: get rid off statfs update on each txc, the rest |
Signed-off-by: Igor Fedotov <igor.fedotov@croit.io>
Signed-off-by: Igor Fedotov <igor.fedotov@croit.io>
Signed-off-by: Igor Fedotov <igor.fedotov@croit.io>
Signed-off-by: Igor Fedotov <igor.fedotov@croit.io>
This implements a basis for statfs recovery from persistent Onode metadata. Plus some redesign to make this procedure more lightweight and performant - via avoiding full Onode rebuild. Signed-off-by: Igor Fedotov <igor.fedotov@croit.io>
Signed-off-by: Igor Fedotov <igor.fedotov@croit.io>
Signed-off-by: Igor Fedotov <igor.fedotov@croit.io>
Signed-off-by: Igor Fedotov <igor.fedotov@croit.io>
Refine actions taken in close_db_environment. Its role is to close db handle and environment when db was used in special modes - repair/reshard, and is not actually open to typical r/w. Signed-off-by: Adam Kupczyk <akupczyk@redhat.com>
Signed-off-by: Igor Fedotov <ifedotov@croit.io>
bef157e to
18cc766
Compare
|
Rados suite review: http://pulpito.front.sepia.ceph.com/?branch=wip-yuri7-testing-2022-10-17-0814 Failures:, unrelated Details: |
readability. Signed-off-by: Igor Fedotov <igor.fedotov@croit.io> (cherry picked from commit 3df4a8d) Conflicts: src/os/bluestore/BlueStore.cc src/os/bluestore/BlueStore.h <lack of ceph#46036 backporting>
This should eliminate duplicate onode releases that could happen before. Additionally onode pinning is performed during cache trimming not onode ref count increment. [Hopefully] fixes: https://tracker.ceph.com/issues/53002 Signed-off-by: Igor Fedotov <igor.fedotov@croit.io> (cherry picked from commit a3057f4) Conflicts: src/os/bluestore/BlueStore.cc src/os/bluestore/BlueStore.h <lack of ceph#46036 and ceph#43299 backporting>
readability. Signed-off-by: Igor Fedotov <igor.fedotov@croit.io> (cherry picked from commit 3df4a8d) Conflicts: src/os/bluestore/BlueStore.cc src/os/bluestore/BlueStore.h <lack of ceph#46036 backporting> (cherry picked from commit 816b4fc) Resolves: rhbz#2218445
This should eliminate duplicate onode releases that could happen before. Additionally onode pinning is performed during cache trimming not onode ref count increment. [Hopefully] fixes: https://tracker.ceph.com/issues/53002 Signed-off-by: Igor Fedotov <igor.fedotov@croit.io> (cherry picked from commit a3057f4) Conflicts: src/os/bluestore/BlueStore.cc src/os/bluestore/BlueStore.h <lack of ceph#46036 and ceph#43299 backporting> (cherry picked from commit 4a80641) Resolves: rhbz#2218445
Instead this relies on NCB stuff to recover bluestore stats in case of non-graceful shutdown.
This functionality is a prerequisite for upcoming new WAL implementation. Additionally this might provide some performance improvements as DB gets less load.
And even more - redesigned NCB recovery is more performant too.
Signed-off-by: Igor Fedotov igor.fedotov@croit.io
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 windows