osd/OSD: auto mark heartbeat sessions as stale and tear them down
Reviewed-by: yanjun <yan.jun8@zte.com.cn>
Reviewed-by: Sage Weil <sage@redhat.com>
Reviewed-by: Kefu Chai <kchai@redhat.com>
mon/Monitor: no need to create a local variable for capturing it
Reviewed-by: xie xingguo <xie.xingguo@zte.com.cn>
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
mgr/dashboard: Separate file for icons for refering and reusing
Reviewed-by: Tiago Melo <tmelo@suse.com>
Reviewed-by: Volker Theile <vtheile@suse.com>
Reviewed-by: Alfonso Martínez <almartin@redhat.com>
crimson/net: print tx/rx messages using logger().info()
Reviewed-by: Samuel Just <sjust@redhat.com>
Reviewed-by: Yingxin Cheng <yingxincheng@gmail.com>
because both `head.version` and `tail.version` are of `uint64_t`, there
is no need to cast the difference between them to `size_t` which could
be a 32-bit unsigned integer on 32bit platforms. also, by casting it to
`size_t` makes it a little bit more difficult to compare it with
`osd_pg_log_trim_max` option, which is of `uint64_t`, as `std::min()`
requires both its parameters to be the same type if we want to use
tempalte parameter type deduction.
Signed-off-by: Kefu Chai <kchai@redhat.com>
change the type of parameter `len` of `BlueFS::_read_random()` from
`size_t` to `uint64_t`.
i think the type of `size_t` comes from
`rocksdb::RandomAccessFile::Read(uint64_t offset, size_t n,
rocksdb::Slice* result, char* scratch)`. and when we implement this
method, we continued using `n`'s type. but, we are using it with
`std::min()`, for instance, where the template parameter type deduction
fails if the lhs and rhs parameters' types are different. so probaly the
better solution is to use `uint64_t` directly to avoid the the cast and
specializing the template.
Signed-off-by: Kefu Chai <kchai@redhat.com>
on armhf, `unsigned int` is 32bit, and `size_t` is defined as `unsigned
int`, so `std::min(a_size_t, a_uint32_t)` is not able to deduce the
template parameter, so we need to either use a single type or specialize
this template.
because `actual` will eventually used as a parameter of
`buffer::list::splice(unsigned, unsigned, buffer::list)`, it's at least
not worse to use `std::min<size_t>()` on a 32-bit system. on a LP64
system, `actual` will be casted to `unsigned` when calling
`bl.splice()` with or without this change.
Signed-off-by: Kefu Chai <kchai@redhat.com>
* refs/pull/27073/head:
qa/tasks: Check MDS failover during mon_thrash
qa/tasks: Compare two FSStatuses
qa/suites/fs: renamed default.yaml to mds.yaml
qa/suites/fs: mon_thrash test for fs
qa/tasks: Fix typo in the comment
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
* refs/pull/28642/head:
mds: check last laggy before marking unresponsive client stale
mds: remove the code that skip evicting the only client
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
If we allocate a new extent that is contiguous with the last extent,
just extend it. This avoids having long vectors of continguous extents
when a single large extent would suffice--especially with log files.
Signed-off-by: Sage Weil <sage@redhat.com>
Warning when there are already 2M omap keys does not help, reduce this
threshold so that preemptive measures can be taken based on this.
Fixes: https://tracker.ceph.com/issues/40583
Signed-off-by: Neha Ojha <nojha@redhat.com>
turns out the libstdc++ on fc30 does not include error_code.message() in
filesystem_error.what(). let's make it optional
Signed-off-by: Kefu Chai <kchai@redhat.com>
MemStore does not have this feature, but CyanStore needs it. because
`qa/tasks/ceph.py` uses following steps when creating/starting an OSD
1. ceph-osd --mkfs --mkkey -i <osd_id> --monmap <monmap>
2. read the osd_fsid of osd.<osd_id>
3. ceph osd new <osd_fsid> <osd_id>
when we mkfs for the OSD, the osd_fsid is still unknown. so we cannot
use the configured one, as it is always empty. in that case, we need to
use a random uuid, and persist it to both ${osd_data}/fsid and
superblock.osd_fsid
Signed-off-by: Kefu Chai <kchai@redhat.com>