The prval is a pointer to an int to write the final completion code of
the rados op. This can't be on the stack since we immediately leave the
current scope after preparing the op (looong before we do the rados op).
We keep the tuple return value to avoid breaking users of this API
(devicehealth module, gnocchi at a minimum).
Fixes: http://tracker.ceph.com/issues/25175
Signed-off-by: Sage Weil <sage@redhat.com>
This test is to prove that the issue from
http://tracker.ceph.com/issues/24957 was fixed
by http://tracker.ceph.com/issues/24784
When running lvm list against a raw device it should handle
gracefully the situation where there are multiple PVs with the
name of the given device.
Signed-off-by: Andrew Schoen <aschoen@redhat.com>
Delay to declared to be healthy until we have received the first
replies from both front and back connections.
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
If we never hear any replies from a heartbeat peer, use first_tx
to calculdate failed_for, which is more accurate.
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
The original logic will reuse the timestamp which we send pings to
the specific heartbeat peer to update the last_rx_front[back] field
on receiving the corresponding replies, which later shall be honoured
as the exact time we succeed in getting the corresponding replies and
is used to calculate the heartbeat latency and determine whether the
relevant peer is dead.
However this is not accurate enough as there may be a delay between
we receive a reply and call heartbeat_check(). We can eliminate
the delay by introducing a map to track the ping-history here,
each entry of which consists of three elements:
1. "tx_time", worked as the map key, indicates the exact timestamp
we send pings.
2. "deadline", indicates we shall receive all replies by then,
otherwise we consider this peer as "dead".
3. "unacknowledged", indicates how many pings for the corresponding
ping are still unacknowledged. The initial value is 2(as we send
two pings from the front and back side for each peer).
We insert an item into the map on every time we sending out a ping, and
decrease the "unacknowledged" counter by 1 each time we get a reply from
the tracked ping. If "unacknowledged" drops to 0, we know all the replies
have been successfully collected and we can safely erase the relevant
item from the map as well as the earlier sent ones, if there is any.
By comparing the current timestamp with the oldest deadline, we can now
make a much accurate decision about whether the corresponding peer is
healthy or not. And by setting last_rx_* to the timestamp we receiving
the reply, the lower bound when we can no longer hear a reply from the
corresponding connection is also much clear now.
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
The erasure code profiles are exposed through the OSD dump which was
overlooked on inspection.
This reverts commit b5487abb8b.
Signed-off-by: Noah Watkins <nwatkins@redhat.com>
dashboard doesn't load correctly without the rbd module, which means
vstart commands that interact with dashboard fail and vstart exits.
Signed-off-by: Noah Watkins <nwatkins@redhat.com>
When we get an EPERM, we can make an informed
guess at what the problem is. This is a reasonably
common user error if they have e.g. "mds allow"
instead of "mds allow *", or "osd allow rwx" instead
of "osd allow *".
Fixes: http://tracker.ceph.com/issues/25172
Signed-off-by: John Spray <john.spray@redhat.com>
Enable the ceph-osd@<id> unit during lvm activate to link these
units to the ceph-osd.target.
Signed-off-by: Dan van der Ster <daniel.vanderster@cern.ch>
Fixes: http://tracker.ceph.com/issues/24152
Allow units to be enabled but not persisted across a reboot,
and use this when enabling osds.
Signed-off-by: Dan van der Ster <daniel.vanderster@cern.ch>
'client_force_lazyio' option enables LAZY_IO gloablly for libcephfs
and ceph-fuse mount.
'ceph_lazyio(...)' and 'ceph_ll_lazyio(...)' enable LAZY_IO for open
file in libcephfs.
'ioctl(fd, CEPH_IOC_LAZYIO, 1UL)' enables LAZY_IO for open fils in
ceph-fuse mount.
Fixes: http://tracker.ceph.com/issues/20598
Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
Drop unused suites, which ATM means all of them except upgrade/luminous-x
which recently got a cleanup in https://github.com/ceph/ceph/pull/23162
Signed-off-by: Nathan Cutler <ncutler@suse.com>
we could create a mini project to build a shared library, and use
try_compile() to test if the found gperftools is compiled with -fPIC.
but as we are targeting mostly xenial when enabling
WITH_STATIC_LIBSTDCXX, and google-perftools on xenial by default
is built without -fPIC. so let's keep it simple.
Signed-off-by: Kefu Chai <kchai@redhat.com>
see
https://libcxx.llvm.org/docs/UsingLibcxx.html#using-libc-experimental-and-experimental,
> Note that as of libc++ 7.0 using the <experimental/filesystem>
> requires linking libc++fs instead of libc++experimental.
do not build ceph_test_admin_socket_output if we are not able to find
the library for std::experimental::filesystem . it is a workaround of
https://reviews.freebsd.org/D10840 where FreeBSD 11.2 does not ship
libc++experimental.a .
Signed-off-by: Kefu Chai <kchai@redhat.com>