* cmake: bump Seastar_API_LEVEL to "5"
* errorator.h: add invoke() methods to futurize variants, as in seastar
API level 5, the future's store type is now either monostate or
a single T, instead of tuple. so it'd be simpler to integrate
with seastar with invoke() semantic without the boxing-unboxing
dance.
* errorator.h: drop apply() methods, as they are not used anymore.
* errorator.h: rename and revise tuple2future. as the store type
is not tuple now, the trait's name is changed accordingly to
match seastar::internal::future_stored_type
Signed-off-by: Kefu Chai <kchai@redhat.com>
before this change, unittest_seastar_config set the specified option to
the shard id in parallel and expects that the values of the option are
consistent across all shards after setting the value on all shards. but
sharded::invoke_on_all() is executed in parallel, and so does
ConfigProxy::do_change(), so there are actually "n x n" continuations
racing each other. the order of the continuations storing the setting
cannot be determined. so we cannot expected that the last batch of
continuations hitting shareds store the same value.
in this change, only a single `conf.set_val()` call is performed with
a known value. and this value is checked with the values stored on all
shards.
Signed-off-by: Kefu Chai <kchai@redhat.com>
instead of seastar::now(). as seastar::now() was moved into
seastar/util/laster.hh.
this change is a leftover of aa28b51f3c
Signed-off-by: Kefu Chai <kchai@redhat.com>
rgw: ObjectCache::put() clears stale objv
Reviewed-by: Matt Benjamin <mbenjamin@redhat.com>
Reviewed-by: Mark Kogan <mkogan@redhat.com>
Reviewed-by: Laura Paduano <lpaduano@suse.com>
mgr: don't update pending service map epoch on receiving map from mon
Reviewed-by: Kefu Chai <kchai@redhat.com>
Reviewed-by: Jason Dillaman <dillaman@redhat.com>
seastar,crimson: bump seastar to use upstream master
Reviewed-by: Samuel Just <sjust@redhat.com>
Reviewed-by: Yingxin Cheng <yingxin.cheng@intel.com>
Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
before this change we are using a fork which includes a fix to address
the FTBFS with GnuTLS < 3.5.6
after this change, we are using the lastest upstream which already
contains this fix.
Signed-off-by: Kefu Chai <kchai@redhat.com>
this addresses the FTBFS like
/usr/include/fmt/core.h:902:19: error: static assertion failed: formatting of non-void pointers is disallowed
902 | static_assert(!sizeof(T), "formatting of non-void pointers is disallowed");
| ^~~~~~~~~~
also, i think it is more helpful in this context to have the
notify id instead of the address, as we can use the id to reference
the notification printed by other logging messages.
Signed-off-by: Kefu Chai <kchai@redhat.com>
to address the FTBFS like:
../src/crimson/os/seastore/lba_manager/btree/btree_range_pin.cc:110:14: required from here
/usr/include/fmt/core.h:902:19: error: static assertion failed: formatting of non-void pointers is disallowed
902 | static_assert(!sizeof(T), "formatting of non-void pointers is disallowed");
| ^~~~~~~~~~
Signed-off-by: Kefu Chai <kchai@redhat.com>
to accommodate the change on seastar's side, which started to use
monostate for representing `void` return type, and hide this convention
using future_stored_type_t.
Signed-off-by: Kefu Chai <kchai@redhat.com>
otherwise we have
../src/crimson/common/errorator.h:1090:8: error: specialization of ‘template<class Future> struct seastar::continuation_base_from_future’ in different namespace [-fpermissive]
1090 | struct continuation_base_from_future<Container<::crimson::errorated_future_marker<Values...>>> {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
since seastar has moved its continuation_base_from_future() out
of seastar::internal into seastar namespace
Signed-off-by: Kefu Chai <kchai@redhat.com>
for two reasons:
* we don't have operator<<(ostream&, in4_addr&) defined.
* we don't have any fmt::format() facility specialized for in4_addr
* to print entity_addr_t instead of in4_addr is more correct in
the sense that we should support IPv6
Signed-off-by: Kefu Chai <kchai@redhat.com>
seastar::now() is extracted into seastar/util/later.hh in a recent
change in seastar, so update accordingly
Signed-off-by: Kefu Chai <kchai@redhat.com>
Right now, recover_delete use WaitForObjectRecovery::pi, which may not be available
if there were no pulling, to pass recovery_info, so use temporary recovery_info instead
Fixes: https://tracker.ceph.com/issues/47357
Signed-off-by: Xuehan Xu <xxhdx1985126@gmail.com>
to address the failure like
fmt/core.h:902:19: error: static assertion failed: formatting of non-void pointers is disallowed
902 | static_assert(!sizeof(T), "formatting of non-void pointers is disallowed");
| ^~~~~~~~~~
and i searched around, couldn't find any other
statement printing the address of message, so
i think it's not of much use to print their
addresses in a single place, unless we can cross
check them in different places.
Signed-off-by: Kefu Chai <kchai@redhat.com>
To support RGW's MetadataLog, add a flag to FIFO::trim that when true
trims up to but not including the given entry.
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
Remove date-oriented trim/list functionality from MDLOG, DataLog, and
Sync-Error-Log.
Don't provide start/end markers. Support only a start marker for list
and an end marker for trim.
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
Rewrite around the asynchronous ASIO-based RADOS interface, and
include support for calls from multiple threads.
`allocate_unique` pattern contributed by
Casey Bodley <cbodley@redhat.com>
Co-authored-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
This is an implementation of fifo queue over rados. Data is appended
to rados object until it's full. At that point data will be written to
a new object. Data is read from the tail sequentially (can be iterated
using marker). Data can be trimmed (up to and including marker).
Queue has a header object (meta), and zero or more data objects (parts).
The software has two layers: the higher level client operations side
that deals with the application apis, and manages the meta and parts,
and there’s the objclass level that deals with the rados layout of
meta and part objects. There are different objclass methods that deal
with reading and modifying each of these entities.
A single part has max possible size, however, it may become full once
a certain smaller size is reached (full_size_threshold). It is
imperative that once a part has reached its capacity, it will not
allow any more writes into it. For this reason, it is important that
data being written to the queue does not exceed max_entry_size . This
is enforced, by the higher level client api.
Written entries go to the current head object, and when it’s full, a
new head part is created. When listing entries, data is iterated from
tail to the current head. Trim can either change the pointer within
the current tail object, and if needed it removes tail objects.
A unitest has been created to test functionality.
Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
Squashed-by: Adam C. Emerson <aemerson@redhat.com>
Having Thread::create store a pointer to a string that is passed to
ceph_pthread_setname in Thread::entry_wrapper can lead to using a
pointer in the calling thread's stack that gets freed before use.
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
Support using a librados::AioCompletion as a completion handler in
Boost.Asio when the arguments are void or only an error code.
(To support more arguments we'd have to wrap up the AioCompletion with
pointers to hold them.)
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
adds an allocator-aware version of std::make_unique(). this is similar to
std::allocate_shared(), though it's slightly less convenient because,
unlike std::shared_ptr<T>, the Deleter has to be specified as a template
parameter in std::unique_ptr<T, Deleter>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Bind an allocator to a completion, analogously to
boost::async::bind_executor.
Based on bind_executor.hpp which is copyright 2003-2019
Christopher M. Kohlhoff <chris@kohlhoff.com> and under
the Boost Software License, Version 1.0
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>