There was a window between issuing quiesce_complete and checking
the quiesce variable unset by the unqiesce callback, when the lock
was not holding. If during that window the unquiesce following the
next quiesce callbacks were called we would miss unquiesce event.
Signed-off-by: Mykola Golub <mgolub@suse.com>
osd: Introduce new PGOpQueueable class for recovery push/reply messages.
Reviewed-by: Josh Durgin <jdurgin@redhat.com>
Reviewed-by: Samuel Just <sjust@redhat.com>
Reviewed-by: Neha Ojha <nojha@redhat.com>
Reviewed-by: David Zafman <dzafman@redhat.com>
Reviewed-by: xie xingguo <xie.xingguo@zte.com.cn>
in future, string_view can be used almost every where string can be
used. in this change, `const char*` is instead passed to the constructor
of system_error, as we can ensure that the string_view instances are
always constructed from a `const char*` ended with `\0`.
we need this change for two reasons:
* better performance
* prefer for the world where string_view rules.
Signed-off-by: Kefu Chai <kchai@redhat.com>
cmake: add cls_fifo as a dependency of osd
Reviewed-by: Adam C. Emerson <aemerson@redhat.com>
Reviewed-by: Soumya Koduri <skoduri@redhat.com>
Reviewed-by: Ali Maredia <amaredia@redhat.com>
This commit exposes HACKING.rst through the
docs website. Formerly, HACKING.rst was just
a file that existed at /src/pybind/mgr/dashboard/
HACKING.rst. This commit also updates README.rst
to point to the new location of HACKING.rst.
Fixes: https://tracker.ceph.com/issues/47230
Signed-off-by: Zac Dover <zac.dover@gmail.com>
crimson uses seastar logging facility for logging. and the latter uses
fmt::format(). currently, we collect the log message into a string and
pass it to log(fmt,...) as "fmt", but seastar/core/sstring.hh defines
the operator<<(ostream&, const vector<T>&) which is a better match than
our the operator<<(ostream&, const vector<T, Allocator>&). and seastar's
operator<<(ostream&, const vector<T>&) uses "{" and "}" to mark the
begin and end of a vector when printing it. and "{}" is also used by
libfmt to enclose its replacement fields. see
https://fmt.dev/latest/syntax.html. so when a vector is printed using
logging facility in crimson, libfmt chokes when trying to parse it as a
format string. so we have some options, like:
- disable seastar's operator<< implementation
- escape the "{}" when writing the vector to the output stream
- print the message as the args, and use "{}" as the fmt.
the 3rd one is the most straightforward, and probably more performant.
Signed-off-by: Kefu Chai <kchai@redhat.com>
* use "code-block:: yaml" for qa suite samples
* use "prompt:: bash $" for shell commands using a non-root user
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>