This PR makes minor alterations to the
text at the beginning of the RADOS Guide.
Most notably, the monitor daemon has been
added to the list of types of daemons that
constitute a Ceph cluster.
Signed-off-by: Zac Dover <zac.dover@gmail.com>
Changing the notification behavior in case of Multipart Upload, updating
the related test cases and adding the documentation changes for the same.
Signed-off-by: Kalpesh Pandya <kapandya@redhat.com>
These overrides are standard for all configurations. The config to
enable fragmentation is also long removed.
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
replace strict_iecstrtoll(const char *str,..) with
strict_iecstrtoll(std::string_view, ..). which is more convenient.
and both of them share the same implementation:
strict_iec_cast<uint64_t>(str, err);
so they are interchangeable.
Signed-off-by: Kefu Chai <kchai@redhat.com>
strict_sistrtoll() is but an alias of strict_si_cast<uint64_t>(..),
let's just drop the former. there are way too many thin wrappers in
strtol.{h,cc}. they don't offer lots of benefit to us.
Signed-off-by: Kefu Chai <kchai@redhat.com>
they are but proxies to strict_strto*(string_view, ...). and their
callers can just call the latter without any change. so drop these
proxies.
Signed-off-by: Kefu Chai <kchai@redhat.com>
this variant is better than strict_si_cast(const char*), because:
* we can just pass std::string to it, as std::string_view can be
constructed from a std::string implicitly
* strict_si_cast(std::string_view, ..) is the underlying
implementation of strict_si_cast(const char*,..), so less
indirection helps with the readability.
Signed-off-by: Kefu Chai <kchai@redhat.com>
this variant is better than strict_iec_cast(const char*), because:
* we can just pass std::string to it, as std::string_view can be
constructed from a std::string implicitly
* strict_iec_cast(std::string_view, ..) is the underlying
implementation of strict_iec_cast(const char*,..), so less
indirection helps with the readability.
* rgw,mon: use strict_iec_cast(std::string_view, ..) instead.
Signed-off-by: Kefu Chai <kchai@redhat.com>
if this PG belongs to a replica pool, since replica pool does not
require rollback, see `pg_pool_t::require_rollback()`, we don't
update the omap entry for noting down the
`on_disk_rollback_info_trimmed_to`. see
`PGLog::_write_log_and_missing()` and `PGLog::_write_log_and_missing()`.
in this case, `read_log_and_missing()` should not be able to find
the value for "rollback_info_trimmed_to" in the omap entries.
because `roll_foward_to()` replays all entries starting at
`rollback_info_trimmed_to`, if it is empty, when the primary osd
is merging the pglog from its peers while peering, it would have
to walk through *all* pglog entries. this would incur unnecessary
overhead, and slows down the peering.
in this change, if this PG belongs to a replica pool, we just fast
forward it to `info.last_update` to avoid this overhead.
Signed-off-by: Mingxin Liu <mingxin@xsky.com>
before this change, `require_rollback` is always true when it is passed
to write_log_and_missing(), which does not hurt. but this diverges from
how `PG::prepare_write()` is implemented. and probably, more important,
this is not correct, as replica pool does not `require_rollback`.
after this change, `require_rollback` is deduced from pgid. so we don't
always pass `true` to `write_log_and_missing()`.
Signed-off-by: Kefu Chai <kchai@redhat.com>
in e6ed65db8b, "cyanstore" is added to the
help message of vstart.sh, but we should also check for this option, and
set the ceph option accordingly.
in this change, the option is checked and "objectstore" is updated
accordingly.
Signed-off-by: Kefu Chai <kchai@redhat.com>
silences following warning from GCC:
../src/kv/RocksDBStore.cc:386:7: warning: ‘r’ may be used uninitialized in this function [-Wmaybe-uninitialized]
386 | if (r < 0) {
| ^~
Signed-off-by: Kefu Chai <kchai@redhat.com>
so that reactor does not complain when being stopped, like:
ERROR 2021-07-24 20:50:23,711 [shard 0] seastar - Timer callback failed: seastar::gate_closed_exception (gate closed)
Signed-off-by: Kefu Chai <kchai@redhat.com>
to disable following warning:
In file included from ../src/common/config.h:27,
from ../src/crimson/common/config_proxy.h:8,
from ../src/crimson/osd/main.cc:23:
../src/common/config_values.h: In copy constructor ‘ConfigValues::ConfigValues(const ConfigValues&)’:
../src/common/config_values.h:19:7: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
19 | class ConfigValues {
| ^~~~~~~~~~~~
Signed-off-by: Kefu Chai <kchai@redhat.com>
* define OpenLDAP::OpenLDAP, so this library can be consumed in a simpler way.
* use OpenLDAP::OpenLDAP instead of OpenLDAP_LIBRARIES when appropriate
* do not link against unused ${OpenLDAP_LIBRARIES}
Signed-off-by: Kefu Chai <kchai@redhat.com>
the upstream project of OpenLDAP is named "OpenLDAP", so rename OPENLDAP to
OpenLDAP for better readability.
Signed-off-by: Kefu Chai <kchai@redhat.com>
it was changed from a shared library to object library back in
3c0bba40b2, because we wanted to link both
rgw_a and rgw_admin_user against it.
but now that rgw_admin_user was dropped in
c89b59428e, let's compile rgw_common
as a static library. it'd be much easier for us to apply various compile
options and linkages to it this way.
Signed-off-by: Kefu Chai <kchai@redhat.com>
instead compiling rgw_kmip as an object library, just include
rgw_kmip_client_impl.cc in radosgw. simpler this way, as
rgw_kmip_client_impl.cc includes rgw/rgw_common.h. while rgw_common.cc
is indirectly included by ${rgw_libs} as a part of rgw_a, so
it would be simpler if we just compile rgw_kmip_client_impl.cc
as a part of radosgw, and let radosgw link against ${rgw_libs},
which are able to take care of the include directories of 3rd party
libraries, like spawn/spawn.hpp, which is pulled in by rgw/rgw_common.h.
Signed-off-by: Kefu Chai <kchai@redhat.com>
because fmt is packaged in EPEL, while librados is packaged
in RHEL, so we cannot have fmt as a runtime dependency of librados.
to address this issue, we should compile librados either with static library
or with header-only library of fmt. but because the fedora packaging
guideline does no encourage us to package static libraries, and it would
be complicated to package both static and dynamic library for fmt.
the simpler solution would be to compile Ceph with the header-only
version of fmt.
in this change, we compile ceph with the header-only version of fmt
on RHEL to address the runtime dependency issue.
Signed-off-by: Kefu Chai <kchai@redhat.com>
in this change:
* an interface library named "fmt-header-only" is introduced. it brings
the support to the header only fmt library.
* fmt::fmt is renamed to fmt
* an option named "WITH_FMT_HEADER_ONLY" is introduced
* fmt::fmt is an alias of "fmt-header-only" if "WITH_FMT_HEADER_ONLY"
is "ON", and an alias of "fmt" otherwise.
because fmt is packaged in EPEL, while librados is packaged
in RHEL, so we cannot have fmt as a runtime dependency of librados.
to address this issue an option "WITH_FMT_HEADER_ONLY" is introduced, so
that we can enable it when building Ceph with the header version of fmt.
and the built packages won't have runtime dependency of fmt.
Signed-off-by: Kefu Chai <kchai@redhat.com>