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>
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>
Rename SIMD to INTEL for clarity.
Instead of agregating all flags in INTEL_FLAGS, create individual flags
for each feature (INTEL_SSE2_FLAGS etc.) for finer control in the
makefiles.
Signed-off-by: Loic Dachary <loic@dachary.org>
To avoid confusion, the jerasure v1 branch that contains commits pending
review upstream is named v2-ceph and the gf-complete v2 branch is named
v2-ceph.
Signed-off-by: Loic Dachary <loic@dachary.org>
The Mutex scope is restricted to only protect the load() method and not
the factory() method. This allows a plugin to load another plugin from
within the factory() method.
Reviewed-By: Christophe Courtaut <christophe.courtaut@gmail.com>
Signed-off-by: Loic Dachary <loic@dachary.org>
This way, redirected omap reads will work correctly by returning
empty maps and buffers.
Fixes: #7870
Signed-off-by: Samuel Just <sam.just@inktank.com>
We are passing a big number to the backend to read and it is trimming it
to the stripe boundary, and then setting the cursor at a slightly smaller
offset bound by oi.size. This is invalid, and will trigger an assert in
the _write_copy_chunk code:
0> 2014-03-21 15:12:23.761509 7f8dd2324700 -1 osd/ReplicatedPG.cc: In function 'void ReplicatedPG::_write_copy_chunk(ReplicatedPG::CopyOpRef, PGBackend::PGTransaction*)' thread 7f8dd2324700 time 2014-03-21 15:12:23.758866
osd/ReplicatedPG.cc: 5554: FAILED assert(cop->data.length() + cop->temp_cursor.data_offset == cop->cursor.data_offset)
To fix this, trim the buffer to the correct length in the completion
context.
Fixes: #7823
Signed-off-by: Sage Weil <sage@inktank.com>
This reverts commit b85330eb1d.
We can't have this in the OSDMap by default or else all clients will require
the new features.
[Fixed up #include for strmap]
Signed-off-by: Sage Weil <sage@inktank.com>
This cleans up the interface, as we don't have this ugly implicit
structure modification when we deal with object that resides on the data
extra pool. Replcae lot's of calls to get_obj_bucket_and_oid_key() to a
cleaner get_obj_ref() that uses a struct to hold the updated fields, and
update the relevant callers.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Fixes: #7676
We need the extra data pool since EC backends cannot handle the omap
operations that are needed for the multipart meta object.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>