When the OSDs are being concurrently thrashed, this can result in
sporadic failures due to the admin socket disappearing.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
We never reply to manager beacons, and we have to mark them
that way or else forwarded messages pile up pending replies
and things eventually block.
Fixes: http://tracker.ceph.com/issues/22114
Reported-by: Hongpeng Lu <ludehp@163.com>
Signed-off-by: Greg Farnum <gfarnum@redhat.com>
Currently, the pg_* counts are not computed properly. We split the
current state by '+' sign but do not add the pg count to the already
found pg count. Instead, we overwrite any existing pg count with the new
count. This patch fixes it by adding all the pg counts together for all
the states.
It also introduces a new pg_total metric for pg_total that shows the
total count of PGs.
Signed-off-by: Boris Ranto <branto@redhat.com>
The osd data can contain bogus '-' entries, skip these when populating
osd metadata and disk occupation.
Signed-off-by: Boris Ranto <branto@redhat.com>
We want to avoid a situation like this:
- start proxy op A (epoch E)
- start proxy op B (epoch E)
- start proxy op C (epoch E)
- objecter sends none of these because target is down in epoch E
- osdmap update to E+1
- pg cancels requeues A, B
- objecter updates to E+1
- objecter sends C
- pg cancels/requeues C
Note that the key thing is that operations on each object are canceled
atomically. On the interval change we do it all at once. In the other
cases, we cancel everything on the given object together.
Fixes: http://tracker.ceph.com/issues/22123
Signed-off-by: Sage Weil <sage@redhat.com>
Underwater dentry is dentry that is dirty in our cache from journal
replay, but had already been flushed to disk before the mds failed.
To decide if an dentry is underwater, original code compares dirty
dentry's version to on-disk dirfrag's version. This method is racy
because CDir::log_mark_dirty() can increase dirfrag's version without
adding log event. After mds failover, version of dirfrag from journal
replay can be less than on-disk dirfrag's version. So newly dirtied
dentry can be equal to or less than the on-disk dirfrag's version.
The race can cause incorrect fragstat/rstat
Fixes: http://tracker.ceph.com/issues/23032
Signed-off-by: Yan, Zheng <zyan@redhat.com>
since string_view is include by standard library, we can now switch from
boost::string_view to std::string_view.
Signed-off-by: Kefu Chai <kchai@redhat.com>
The openstack "swift" command deletes acls by submitting an
acl with an empty string. The existing logic uses c++ strings,
which can't distinguish between an empty string and a non-existant
string. Additional, the strings are coming from RGWEnv which
supplies C strings not c++. Using C strings instead makes it
trivial to pass "non-existance" (as a null string). It also avoids
some type conversion with string copying.
Fixes: http://tracker.ceph.com/issues/22897
Signed-off-by: Marcus Watts <mwatts@redhat.com>
Add option "--journal" to identify the journal type.
this patch can fully support mode "journal" and "header" for purge queue.
As mode "event" is only specific for "mdlog", "journal" and "header" mode only contain
pure "Journaler" operation.
Signed-off-by: dongdong tao <tdd21151186@gmail.com>
The transactions are idependent in each collection/sequencer, so we
can't record to a single txn object with racing transactions. Fix
it by doing one in each collection, and when reading the latest op,
use the highest txn value we see.
Signed-off-by: Sage Weil <sage@redhat.com>
We need to flush between split. This requirement unfortunately
doesn't quite go away with the FileStore tracking.
Also, flush for each batch. This is just because the test environment
may have a low open file ulimit. (The old code did apply_transaction,
so it's functionally equivalent to this.)
Signed-off-by: Sage Weil <sage@redhat.com>