By moving the buffer-related stats into tick_without_osd_lock(),
we are already accurate enough updating period of these counters.
So there is no need to do this in this time-senstive method,
which holds the big osd_lock.
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
1. these counters are of type atomic_t and are public-access safe.
2. since the tick() thread requires the big osd_lock and thus may
not tick at a constant interval, it is good for accuracy and
performance to move the buffer-related stats to the
tick_without_osd_lock() thread instead.
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
For now BlueStore is the only caller of set_bitwise_key_u32(),
and it will always passed in hash_reverse_bits.
Since this is one of the basic and key method of BlueStore, it makes
sense to make it a little faster.
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
as Thread.cc lives in libcommon, and global is not using libpthread
directly. so moving libpthread linkage from libglobal to libcommon.
Signed-off-by: Kefu Chai <kchai@redhat.com>
pybind: Port Python-based tests and remaining Python bindings to Python 3
Reviewed-by: Case Bodley <cbodley@redhat.com>
Reviewed-by: John Spray <jspray@redhat.com>
Reviewed-by: Josh Durgin <jdurgin@redhat.com>
* remove unused stuff, we do not pass/use FUSE_VERSION in cmake.
the FUSE_VERSION we are using is defined by "fuse_common.h".
* use FindPackageHandleStandardArgs for handling find_package()
arguments.
* also detect osxfuse on MacOS.
Signed-off-by: Kefu Chai <kchai@redhat.com>
* AIO_LIBS is now named AIO_LIBARIES, and there is not point to print
out its path
* USE_NSS is not defined if NSS is not checked, so if(USE_NSS) is better
here.
Signed-off-by: Kefu Chai <kchai@redhat.com>
better off using the detected path, instead of using the default path
for finding the linked libaries.
see "cmake --help-policy CMP0065" for more details.
Signed-off-by: Kefu Chai <kchai@redhat.com>
missed it in 0edfad0.
* librbd: pass '--exclude-libs,ALL' to linker
* rbd: link against used libraries explicitly, rbd is accessing some
internal symbols not exposed by librbd.
Signed-off-by: Kefu Chai <kchai@redhat.com>
os/bluestore: fix bitmap allocating failure if max_alloc_size is 0
Mark's Comments:
This passed Jenkins checks.
This passed "ceph_test_objectstore --gtest_filter=*/2".
This PR did not appear to have a significant impact on performance tests.
Reviewed-by: Mark Nelson <mnelson@redhat.com>
os/bluestore: replace interval_set with a bitset for used_block conta…
Mark's Comments:
This passed Jenkins checks.
This passed "ceph_test_objectstore --gtest_filter=*/2".
This PR did not appear to have a significant impact on performance tests, however no fsck specific performance or memory tests were performed.
Reviewed-by: Mark Nelson <mnelson@redhat.com>
When testing < v10.2.1 with standby replay, I was often confused why the
MDS daemons would go into replay even when this was false.
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
os/bluestore: get rid off blob's ref_map for non-shared objects
Mark's Comments:
This passed Jenkins checks.
This PR did not appear to have a significant impact on performance tests.
This initially failed "ceph_test_objectstore --gtest_filter=*/2" segfaulting in one of the tests. See the attached log in the comments for the PR for details. Subsequent reruns passed, and a run through valgrind's memcheck also passed. Igor indicated that he has seen this particular segfault previously and believes it is related to running out of memory. Given that the PR has passed the object store tests multiple times and the segfault has been observed in the past, I believe this PR is unrelated.
Reviewed-by: Mark Nelson <mnelson@redhat.com>
allows the default zone and zonegroup (created with empty realm_id) to
be later added to a realm. the 'modify' command now accepts either
--realm_id=id or --rgw-realm=name
Fixes: http://tracker.ceph.com/issues/16839
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Since FSMap was added, the state of a daemon can lead
to an entirely invalid map, but we were letting daemons
send any state they wanted.
Especially, we must not allow standby daemons to set
any state other than STANDBY.
Fixes: http://tracker.ceph.com/issues/16592
Signed-off-by: John Spray <john.spray@redhat.com>
When a primiry image is being deleted, the mirrored image might
temporary be reported in error state, before deletion is propagated.
Signed-off-by: Mykola Golub <mgolub@mirantis.com>
- log to stderr;
- log status if a `wait_for` function failed;
- don't needlessly sleep in `wait_for` functions after the last
unsuccessful iteration;
- make `wait_for_pool_images` work for image removal case;
- fix `wait_for_pool_images` reset timeout (last_count set).
Signed-off-by: Mykola Golub <mgolub@mirantis.com>
we should avoid exposing non-public symbols from user facing dynamic
libraries. so pass '--exclude-libs' with appropriate argument to linker.
as libcephfs does not add the ((visibility ("default"))) specifier to
the exported symbols, we can not set the default visiblity to hidden for
libcephfs, and "-export-symbols-regex" is a libtool option, we need to
develop a way for cmake to fix the visibility of libcephfs. it's still a
TODO.
* librados
- pass '--exclude-libs=ALL' to linker
- add buffer.cc to librados, so we can use '--exclude-libs=ALL'.
* libcephfs: pass '--exclude-libs=libcommon.a,libclient.a,libosdc.a' to
linker
* libcommon
- extract common_buffer_obj from libcommon, to avoid compilation
this source file repeatly.
* tests:
- link against common_internal_objs explicitly if the test in
question is using the internal symbols.
* ceph-client-debug:
- link against client explicitly, and do not link against librados
anymore, as it is not used in this tool.
Fixes: http://tracker.ceph.com/issues/16556
Signed-off-by: Kefu Chai <kchai@redhat.com>
for example, json_spirit uses common_utf8, so link json_spirit against common_utf8.
because libcommon includes json_spirit, this change does not impact the
consumers of libcommon.
Signed-off-by: Kefu Chai <kchai@redhat.com>