mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-02-24 14:33:42 +00:00
libceph: make RECOVERY_DELETES feature create a new interval
This is needed so that the OSDs can regenerate the missing set at the start of a new interval where support for recovery deletes changed. Signed-off-by: Ilya Dryomov <idryomov@gmail.com> Reviewed-by: Sage Weil <sage@redhat.com>
This commit is contained in:
parent
f53b7665c8
commit
ae78dd8139
@ -148,6 +148,7 @@ struct ceph_osd_request_target {
|
|||||||
int size;
|
int size;
|
||||||
int min_size;
|
int min_size;
|
||||||
bool sort_bitwise;
|
bool sort_bitwise;
|
||||||
|
bool recovery_deletes;
|
||||||
|
|
||||||
unsigned int flags; /* CEPH_OSD_FLAG_* */
|
unsigned int flags; /* CEPH_OSD_FLAG_* */
|
||||||
bool paused;
|
bool paused;
|
||||||
|
@ -272,6 +272,8 @@ bool ceph_is_new_interval(const struct ceph_osds *old_acting,
|
|||||||
u32 new_pg_num,
|
u32 new_pg_num,
|
||||||
bool old_sort_bitwise,
|
bool old_sort_bitwise,
|
||||||
bool new_sort_bitwise,
|
bool new_sort_bitwise,
|
||||||
|
bool old_recovery_deletes,
|
||||||
|
bool new_recovery_deletes,
|
||||||
const struct ceph_pg *pgid);
|
const struct ceph_pg *pgid);
|
||||||
bool ceph_osds_changed(const struct ceph_osds *old_acting,
|
bool ceph_osds_changed(const struct ceph_osds *old_acting,
|
||||||
const struct ceph_osds *new_acting,
|
const struct ceph_osds *new_acting,
|
||||||
|
@ -158,6 +158,10 @@ extern const char *ceph_osd_state_name(int s);
|
|||||||
#define CEPH_OSDMAP_NOTIERAGENT (1<<13) /* disable tiering agent */
|
#define CEPH_OSDMAP_NOTIERAGENT (1<<13) /* disable tiering agent */
|
||||||
#define CEPH_OSDMAP_NOREBALANCE (1<<14) /* block osd backfill unless pg is degraded */
|
#define CEPH_OSDMAP_NOREBALANCE (1<<14) /* block osd backfill unless pg is degraded */
|
||||||
#define CEPH_OSDMAP_SORTBITWISE (1<<15) /* use bitwise hobject_t sort */
|
#define CEPH_OSDMAP_SORTBITWISE (1<<15) /* use bitwise hobject_t sort */
|
||||||
|
#define CEPH_OSDMAP_REQUIRE_JEWEL (1<<16) /* require jewel for booting osds */
|
||||||
|
#define CEPH_OSDMAP_REQUIRE_KRAKEN (1<<17) /* require kraken for booting osds */
|
||||||
|
#define CEPH_OSDMAP_REQUIRE_LUMINOUS (1<<18) /* require l for booting osds */
|
||||||
|
#define CEPH_OSDMAP_RECOVERY_DELETES (1<<19) /* deletes performed during recovery instead of peering */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The error code to return when an OSD can't handle a write
|
* The error code to return when an OSD can't handle a write
|
||||||
|
@ -1337,6 +1337,8 @@ static enum calc_target_result calc_target(struct ceph_osd_client *osdc,
|
|||||||
bool legacy_change;
|
bool legacy_change;
|
||||||
bool split = false;
|
bool split = false;
|
||||||
bool sort_bitwise = ceph_osdmap_flag(osdc, CEPH_OSDMAP_SORTBITWISE);
|
bool sort_bitwise = ceph_osdmap_flag(osdc, CEPH_OSDMAP_SORTBITWISE);
|
||||||
|
bool recovery_deletes = ceph_osdmap_flag(osdc,
|
||||||
|
CEPH_OSDMAP_RECOVERY_DELETES);
|
||||||
enum calc_target_result ct_res;
|
enum calc_target_result ct_res;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -1399,6 +1401,8 @@ static enum calc_target_result calc_target(struct ceph_osd_client *osdc,
|
|||||||
pi->pg_num,
|
pi->pg_num,
|
||||||
t->sort_bitwise,
|
t->sort_bitwise,
|
||||||
sort_bitwise,
|
sort_bitwise,
|
||||||
|
t->recovery_deletes,
|
||||||
|
recovery_deletes,
|
||||||
&last_pgid))
|
&last_pgid))
|
||||||
force_resend = true;
|
force_resend = true;
|
||||||
|
|
||||||
@ -1421,6 +1425,7 @@ static enum calc_target_result calc_target(struct ceph_osd_client *osdc,
|
|||||||
t->pg_num = pi->pg_num;
|
t->pg_num = pi->pg_num;
|
||||||
t->pg_num_mask = pi->pg_num_mask;
|
t->pg_num_mask = pi->pg_num_mask;
|
||||||
t->sort_bitwise = sort_bitwise;
|
t->sort_bitwise = sort_bitwise;
|
||||||
|
t->recovery_deletes = recovery_deletes;
|
||||||
|
|
||||||
t->osd = acting.primary;
|
t->osd = acting.primary;
|
||||||
}
|
}
|
||||||
|
@ -2082,6 +2082,8 @@ bool ceph_is_new_interval(const struct ceph_osds *old_acting,
|
|||||||
u32 new_pg_num,
|
u32 new_pg_num,
|
||||||
bool old_sort_bitwise,
|
bool old_sort_bitwise,
|
||||||
bool new_sort_bitwise,
|
bool new_sort_bitwise,
|
||||||
|
bool old_recovery_deletes,
|
||||||
|
bool new_recovery_deletes,
|
||||||
const struct ceph_pg *pgid)
|
const struct ceph_pg *pgid)
|
||||||
{
|
{
|
||||||
return !osds_equal(old_acting, new_acting) ||
|
return !osds_equal(old_acting, new_acting) ||
|
||||||
@ -2089,7 +2091,8 @@ bool ceph_is_new_interval(const struct ceph_osds *old_acting,
|
|||||||
old_size != new_size ||
|
old_size != new_size ||
|
||||||
old_min_size != new_min_size ||
|
old_min_size != new_min_size ||
|
||||||
ceph_pg_is_split(pgid, old_pg_num, new_pg_num) ||
|
ceph_pg_is_split(pgid, old_pg_num, new_pg_num) ||
|
||||||
old_sort_bitwise != new_sort_bitwise;
|
old_sort_bitwise != new_sort_bitwise ||
|
||||||
|
old_recovery_deletes != new_recovery_deletes;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int calc_pg_rank(int osd, const struct ceph_osds *acting)
|
static int calc_pg_rank(int osd, const struct ceph_osds *acting)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user