* The parameters come from the erasure code profile
* Add a note about the upstream submodules gf-complete / jerasure
Signed-off-by: Loic Dachary <loic@dachary.org>
Update the introduction to explain erasure code profiles. Remove
obsolete explanations about partial writes etc. Remove links to tickets
used during development. Update permalinks to be closer to
Firefly (v0.78).
Signed-off-by: Loic Dachary <loic@dachary.org>
On machines with MON and OSDs (on boot) OSDs started shortly after MON startup
but MON needs time to become oprational so OSDs fail to start due to short
timeout because they don't have enough time to establish communication with
cluster. This is even more likely to happen when there are other monitors down
which is not unusual when servers are rebooting after power failure.
Increasing timeout significantly improves chances for successful OSD start.
Signed-off-by: Dmitry Smirnov <onlyjob@member.fsf.org>
Make sure the Inode does not go away while a readahead is in progress. In
particular:
- read_async
- start a readahead
- get actual read from cache, return
- close/release
- call ObjectCacher::release_set() and get unclean > 0, assert
Fixes: #7867
Backport: emperor, dumpling
Signed-off-by: Sage Weil <sage@inktank.com>
If we do no assemble a target bl, we still want to return a valid return
code with the number of bytes read-ahead so that the C_RetryRead completion
will see this as a finish and call the caller's provided Context.
Signed-off-by: Sage Weil <sage@inktank.com>
RGWRados::initialize() is not called when doing
RGWRados::get_raw_storage_provider(). This was the culprit for issue
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Fixes: #7903
Since we didn't prefetch data then we couldn't rely on the data to
actually exist there. In that case just move on and read the object.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
If we decide to revert back to up, we need to
1- return false, so that we go into the NeedActingChange state, and
2- actually ask for that change.
It's too fugly to try to jump down to the existing queue_want_pg_temp
call 100+ lines down in this function, so just do it here. We already
know that we are requesting to clear the pg_temp.
Fixes: #7902
Backport: emperor, dumpling
Signed-off-by: Sage Weil <sage@inktank.com>
The OSDs need to support this feature before we allow users to turn it
on. This is similar to what the erasure pool support does.
Signed-off-by: Sage Weil <sage@inktank.com>
A few cases:
- As we are working through the list, if we see a clone that is lower than
the next one we were expecting, we should be able to skip them.
- If we see a head, we can skip all of the rest of the clones.
- If we get to the end and next_clone was set, we can ignore it.
Signed-off-by: Sage Weil <sage@inktank.com>
- notice when we are missing a clone (that isn't at the end of the list)
- notice when we are missing a clone on the last object in the scrub map
- do not assert when we are missing a clone
There is still more we could do to improve this (like noticing one missing
clone but still checking the others), but we'll leave that aside for just
a moment...
Signed-off-by: Sage Weil <sage@inktank.com>
Trigger a scrub to verify that we can handle a cache tier that is missing
some clones. We rely on the test harness to notice the error, and we do
not confirm that the scrub happened. In practice this is plenty of time,
however.
Signed-off-by: Sage Weil <sage@inktank.com>
We don't need to worry about pidfile because that is done by the fork
functions, which ceph-conf doesn't call.
Signed-off-by: Sage Weil <sage@inktank.com>
If you are querying the conf for an osd and it has a log configured, we
should not generate any log activity.
This isn't super pretty, but it is much less intrusive that wiring a 'do
not log' flag down into CephContext and a zillion other places.
Fixes: #7849
Signed-off-by: Sage Weil <sage@inktank.com>
Fixes: #7876
Need to use the actual content length, not the pointer to the string.
This was probably working because there's correlation to when
content_length > 0 to whether s->length is not null.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
If the machine running make check has the required CPU features
available, load the SSE optimized plugin and check that it can encode /
decode a simple payload. If the CPU features are not available, only
test the generic plugin and display an informative message about the
tests that were skipped.
Signed-off-by: Loic Dachary <loic@dachary.org>
Test the selection of the plugin depending on the CPU features. The
prefix of the plugin is "jerasure" by default (jerasure_generic,
jerasure_sse3, jerasure_sse4) and can be modified with the
"jerasure-name" parameter. A test plugin is created for each
variant (test_jerasure_generic, test_jerasure_sse3, test_jerasure_sse4).
The flags set by ceph_probe are modified by the test to check if the
expected plugin suffix is appended.
Signed-off-by: Loic Dachary <loic@dachary.org>
The jerasure plugin is compiled with three sets of flags:
* jerasure_generic with no SSE optimization
* jerasure_sse3 with SSE2, SSE3 and SSSE3 optimizations
* jerasure_sse4 with SSE2, SSE3, SSSE3, SSE41, SSE42 and PCLMUL optimizations
The jerasure plugin loads the appropriate plugin depending on the CPU
features detected at runtime.
http://tracker.ceph.com/issues/7826fixes#7826
Signed-off-by: Loic Dachary <loic@dachary.org>