Ops and some subops need to wait for active to ensure correct ordering
with respect to peering operations.
Signed-off-by: Samuel Just <sam.just@inktank.com>
hobject_t must now be globally unique in the filestore. Thus, if we
start creating objects in a pg before the removal collections for the
previous incarnation are fully removed, we might end up a second
instance of the same hobject violating the filestore rules.
Signed-off-by: Samuel Just <sam.just@inktank.com>
PG opsequencers will be used for removing a pg. If the pg is recreated
before the removal is complete, we need the new pg incarnation to be
able to inherit the osr of its predecessor.
Previously, we queued the pg for removal and only rendered it unusable
after the contents were fully removed. Now, we syncronously remove it
from the map and queue a transaction renaming the collections. We then
asyncronously clean up those collections. If the pg is recreated, it
will inherit the same osr until the cleanup is complete ensuring correct
op ordering with respect to the collection rename.
Signed-off-by: Samuel Just <sam.just@inktank.com>
Rather than explicitely flushing the filestore, send a noop through the
filestore at the beginning of peering and, at the end, wait for it to
finish by adding an extra state.
Also, delay ops until flushed is true. Until we have finished flushing,
we cannot safetly read objects.
Signed-off-by: Samuel Just <sam.just@inktank.com>
This is simpler than having to update all of the RecoveryCtx users
whenever we change the types in RecoveryCtx.
Signed-off-by: Samuel Just <sam.just@inktank.com>
In order to clarify data structure locking, PGs will now access
OSDService rather the the OSD directly. Over time, more structures will
be moved to the OSDService. osd_lock can no longer be held while pg
locks are held.
Signed-off-by: Samuel Just <sam.just@inktank.com>
PGs have their map updates done in a different thread. Thus, we no
longer need to grab the pg locks. activate_map no longer requires
the map_lock in order to allow us to queue events for the pgs.
Signed-off-by: Samuel Just <sam.just@inktank.com>
_create_lock_pg might encounter a preexisting pg collection simply
because the removal transaction had not yet completed.
Signed-off-by: Samuel Just <sam.just@inktank.com>
Query and Notify messages include logical messages from multiple
pgs. Each logical message (pg_query_t and pg_notify_t) now
contains an epoch_sent.
Signed-off-by: Samuel Just <sam.just@inktank.com>
Previously, pgs were initialized via Info/Log/etc. Since the event
which triggered the pg creation may now be queued, map update events may
occur before the event is processed. Thus, get_or_create_pg now handles
the initialization prior to queuing the event.
Signed-off-by: Samuel Just <sam.just@inktank.com>
The pg map will now be advanced in process_peering_event (in advance_pg)
to allow handle_osd_map to not grab pg locks in-line. handle_osd_map
queues NullEvts to ensure that each pg is updated in a timely fashion.
Signed-off-by: Samuel Just <sam.just@inktank.com>
Previously, replica history was updated in OSD::handle_pg_query.
Updating the history is now handled in the pg state machine.
Signed-off-by: Samuel Just <sam.just@inktank.com>
CephPeeringEvt is now the supertype for all peering state machine
events. This will allow us to generalize checking for stale peering
events and delaying events for future maps.
Signed-off-by: Samuel Just <sam.just@inktank.com>
The date format now is "YYYY-MM-DD[ hh:mm:ss]". Got rid of
the --time param for the old ops log stuff.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Conflicts:
src/test/cli/radosgw-admin/help.t
Uses gdisk, as it seems to be the only tool that can automate GPT uuid
changes. Needs to run as root.
Adds Recommends: gdisk to ceph.deb.
Closes: #2547
Signed-off-by: Tommi Virtanen <tv@inktank.com>
remove calls to BOOST libraries for computing Chi-squared statistics and
producing discrete random variables with a given probability distribution.
Signed-off-by: caleb miles <caleb.miles@inktank.com>