const hobject_t &oid,
const object_stat_sum_t &stat_diff) override;
void failed_push(const list<pg_shard_t> &from, const hobject_t &soid) override;
+ void primary_failed(const hobject_t &soid) override;
+ bool primary_error(const hobject_t& soid, eversion_t v) override;
void cancel_pull(const hobject_t &soid) override;
void apply_stats(
const hobject_t &soid,
const object_stat_sum_t &delta_stats) override;
+ void on_primary_error(const hobject_t &oid, eversion_t v) override;
template<class T> class BlessedGenContext;
class BlessedContext;
ThreadPool::TPHandle &handle ///< [in] tp handle
);
- void prep_backfill_object_push(
+ int prep_backfill_object_push(
hobject_t oid, eversion_t v, ObjectContextRef obc,
vector<pg_shard_t> peers,
PGBackend::RecoveryHandle *h);
void handle_backoff(OpRequestRef& op);
- OpContextUPtr trim_object(bool first, const hobject_t &coid);
+ int trim_object(bool first, const hobject_t &coid, OpContextUPtr *ctxp);
void snap_trimmer(epoch_t e) override;
void kick_snap_trim() override;
void snap_trimmer_scrub_complete() override;
pending = nullptr;
auto *pg = context< SnapTrimmer >().pg;
pg->state_clear(PG_STATE_SNAPTRIM_WAIT);
+ pg->state_clear(PG_STATE_SNAPTRIM_ERROR);
pg->publish_stats_to_osd();
}
};
void block_write_on_full_cache(
const hobject_t& oid, OpRequestRef op);
+ void block_for_clean(
+ const hobject_t& oid, OpRequestRef op);
void block_write_on_snap_rollback(
const hobject_t& oid, ObjectContextRef obc, OpRequestRef op);
void block_write_on_degraded_snap(const hobject_t& oid, OpRequestRef op);
void on_shutdown() override;
bool check_failsafe_full(ostream &ss) override;
bool check_osdmap_full(const set<pg_shard_t> &missing_on) override;
+ int rep_repair_primary_object(const hobject_t& soid, OpRequestRef op);
// attr cache handling
void setattr_maybe_cache(