If we export a PG, it later splits, and then we try to import a
post-split portion of it, we need to generate the PastIntervals
properly (instead of crashing).
Fixes: http://tracker.ceph.com/issues/21753
Signed-off-by: Sage Weil <sage@redhat.com>
Use "union" merge to automatically resolve trivial append merge conflicts from
using ptl-tool.py.
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
I added this originally to prevent a deadlock when reading a new-style
configuration variable from a called observer. I didn't realize at the
time that the config mutex was recursive, so this change was
superfluous.
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
This commit will allow PGScrub, PGRecovery, PGSnapTrim
to be created anywhere (e.g. TestMClockClientQueue.cc)
Signed-off-by: Myoungwon Oh <omwmw@sk.com>
this pave the road to generalize OpWQ
We're going to want to be able to queue things that are not ordered by
the PG lock. To that end, this patch genearlizes OSD::ShardedOpWQ to
use a type which can specify an ordering token and locking structure
other than a PG.
There is a lot of collateral damage which I didn't feel was worth
separating out into other commits. The code in ShardedOpWQ itself got
some superficial cleanup. Also, the item being queued has been switched
to not use a boost::variant. It was a cute way before to make the type
easily copyable, but adding more visitors for the locking support would
have been annoying. Instead, the variant is a unique_ptr to an
interface. This makes the queue item type no longer copyable, which is
just as well since we don't really want to be copying queue items anyway
(duplicates would be most likely a bug)
Signed-off-by: Samuel Just <sjust@redhat.com>
Signed-off-by: Kefu Chai <kchai@redhat.com>
Signed-off-by: Myoungwon Oh <omwmw@sk.com>
better to be specific, so we don't run into the same problem even we
are using the MSB of uint64_t for a pg state bit in future. we could,
however use uint64_t(-1) to indicate the pg_string_state()'s failure to
parse the state string, because pg_string_state() only translate a
single state a time. but it's always better to be explicit than
implicit.
Fixes: http://tracker.ceph.com/issues/21609
Signed-off-by: Kefu Chai <kchai@redhat.com>
enable the WorkQueue to support move-only template types.
Signed-off-by: Samuel Just <sjust@redhat.com>
Signed-off-by: Kefu Chai <kchai@redhat.com>
Signed-off-by: Myoungwon Oh <omwmw@sk.com>
the second param of enable_launage() is not used, we should call it
multiple times to enable more than one language. switch to project()
command for simplicity.
Signed-off-by: Kefu Chai <kchai@redhat.com>
session opened by Server::prepare_force_open_sessions() has no
client metadata.
Fixes: http://tracker.ceph.com/issues/21746
Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
null instance and olh share rados object. Null instance using the rados object mtime as its mtime. When olh updated, the rados object mtime will change.
Thus the null instance will be incorrect. When list objects in bucket, the mtime is correct, down the null instance the last modified time is incorrect.
So when update olh, using the previous mtime, thus the null instance mtime will be correct.
Fixes: http://tracker.ceph.com/issues/21743
Signed-off-by: Shasha Lu <lu.shasha@eisoo.com>
we can not assume that the the `rep` type is identical to `time_t` and
`susecond_t`, on osx they are `int`, not `int64_t`. so cast they as
necessary.
this fixes the error and warning of
LogClock.h:112:7: error: non-constant-expression cannot be narrowed from type 'rep' (aka 'long long') to '__darwin_suseconds_t' (aka 'int') in initializer list [-Wc++11-narrowing]
std::chrono::duration_cast<std::chrono::microseconds>(
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/kefu/dev/ceph/src/log/LogClock.h:112:7: note: insert an explicit cast to silence this issue
std::chrono::duration_cast<std::chrono::microseconds>(
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LogClock.h:139:46: warning: format specifies type 'long' but the argument has type 'int' [-Wformat]
bdt.tm_hour, bdt.tm_min, bdt.tm_sec, tv.tv_usec / 1000);
^~~~~~~~~~~~~~~~~
Signed-off-by: Kefu Chai <kchai@redhat.com>
The client will now be registered before the bootstrap state machine
is invoked.
Fixes: http://tracker.ceph.com/issues/21561
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Update the standard qa suite cluster configs so that we continue
asserting in our nightlies, but users don't hit this.
Fixes: http://tracker.ceph.com/issues/21737
Signed-off-by: Greg Farnum <gfarnum@redhat.com>
Copies of the same hashing algorithm are scattered throughout the rgw
codebase. Consolidate them.
Signed-off-by: J. Eric Ivancich <ivancich@redhat.com>
on_flush() requeues waiting_for_peered, but we flush twice on the
primary during peering, and we don't want to requeue the first one
(when we have the master pg log merged).
Fix by moving waiting_for_peered to waiting_for_flush if we aren't
already flush on _activate_committed. If we get an op and are
peered but not flushed, queue ops there. (We can simplify this
check a bit since pgbackend inactive message handling doesn't care
about flushed or not flushed.) When flushed, we requeue
waiting_for_flush.
The waiting_for_flush, waiting_for_peered, and waiting_for_active
lists are all mutually exclusive, so this mostly serves to
clarify what we are waiting for (not to keep items separate). And
it means that on_flushed() will only requeue things that were
waiting for it specifically.
Fixes: http://tracker.ceph.com/issues/21407
Signed-off-by: Sage Weil <sage@redhat.com>
PGQueueable was always a pretty bad name, and going forward, we won't
necessarily be scheduling things ordered only by the PG lock, so let's
change it.
Signed-off-by: Samuel Just <sjust@redhat.com>
Signed-off-by: Kefu Chai <kchai@redhat.com>
Signed-off-by: Myoungwon Oh <omwmw@sk.com>
PG users do not need these public methods.
Signed-off-by: Samuel Just <sjust@redhat.com>
Signed-off-by: Kefu Chai <kchai@redhat.com>
Signed-off-by: Myoungwon Oh <omwmw@sk.com>
The "mds blacklist interval" setting has no effect on the time that
the "ceph osd blacklist" command will use by default. Clarify this in
the docs.
Signed-off-by: Ken Dreyer <kdreyer@redhat.com>