osd: Correction to #6690 change

Reorder sequence so min_size check is right
Remove redundant resize of backfill

Correction to 19cff890eb6083eefdb7b709773313b2c8acbcea

Signed-off-by: David Zafman <david.zafman@inktank.com>
osd: Remove redundant incompat feature

We can remove this CompatSet bit without worry because the only
way it could have been set is if an erasure coded pool was create.
This isn't supported as of yet.

Signed-off-by: David Zafman <david.zafman@inktank.com>
osd: Config OSD when CEPH_FEATURE_OSD_ERASURE_CODES feature first seen

Set the OSD superblock CEPH_OSD_FEATURE_INCOMPAT_SHARDS and
notify the filestore through set_allow_sharded_objects() in that order.

Signed-off-by: David Zafman <david.zafman@inktank.com>
osd: Determine if compatibility is required due to back level OSDs

fixes: #7039

Signed-off-by: David Zafman <david.zafman@inktank.com>
osd: Fix problems in ReplicatedPG::do_op() logic

Fix assert(is_degraded_object(soid)) in ReplicatedPG::wait_for_degraded_object()
  Use last_backfill_started as the backfill line
  Handle uncommon case of multi op source after backfill line and target before
  backfill line and !is_degraded_object().
  Include backfill line itself for before_backfill (<= instead of <)

Signed-off-by: David Zafman <david.zafman@inktank.com>
osd: Return false for func that returns bool

Signed-off-by: David Zafman <david.zafman@inktank.com>
messages, os, osd: Clean-up g/hobject_t MAX handling

Add check of is_max() before updating an unset pool
Use efficient is_max() instead of compare with hobject::get_max()

Signed-off-by: David Zafman <david.zafman@inktank.com>
osd: Recovery reservations need to include backfill peers

Caused by 86e4fd4f7a9848511e1bf9ae433fcd3a35a0818f

Signed-off-by: David Zafman <david.zafman@inktank.com>
osd: Interim working version with backfill reserve state changes

Signed-off-by: David Zafman <david.zafman@inktank.com>
osd: Change waiting_on_backfill to a set<int>

Signed-off-by: David Zafman <david.zafman@inktank.com>
osd: Interim backfill changes

Make peer_backfill_info a map which holds a
BackfillInterval for all backfill targets.
Initially see if recover_backfill() can just backfill
the first one and mark them all finished.

Signed-off-by: David Zafman <david.zafman@inktank.com>
osd: Implement multiple backfill target handling

Fixes: #5858

Signed-off-by: David Zafman <david.zafman@inktank.com>
Merge pull request #931 from ceph/wip-5858-rebase

Wip 5858 rebase

Reviewed-by: Samuel Just <sam.just@inktank.com>
hobject: admit that gen_t is actually version_t

Signed-off-by: Samuel Just <sam.just@inktank.com>
ObjectStore: improve name of the queue_transaction which cleans up the transaction

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedBackend.h: don't need to be active for pushes

Signed-off-by: Samuel Just <sam.just@inktank.com>
FileStore::_collection_move_rename: remove source before closing guard

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedBackend: remove pushing entry for each object as it completes

Signed-off-by: Samuel Just <sam.just@inktank.com>
PGLog: don't move up log.tail

Moving up log.tail unnecessarily risks backfilling
a replica after a split.  Also, it disrupts the
property that replicas from the most recent interval
which performed writes must have overlapping logs.

Signed-off-by: Samuel Just <sam.just@inktank.com>
PGLog::rewind_divergent_log: we can rewind to tail, fix assert

Signed-off-by: Samuel Just <sam.just@inktank.com>