libceph: fold [l]req->last_force_resend into ceph_osd_request_target
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
parent
220abf5aa7
commit
dc93e0e283
|
@ -148,6 +148,8 @@ struct ceph_osd_request_target {
|
||||||
unsigned int flags; /* CEPH_OSD_FLAG_* */
|
unsigned int flags; /* CEPH_OSD_FLAG_* */
|
||||||
bool paused;
|
bool paused;
|
||||||
|
|
||||||
|
u32 last_force_resend;
|
||||||
|
|
||||||
int osd;
|
int osd;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -193,7 +195,6 @@ struct ceph_osd_request {
|
||||||
unsigned long r_stamp; /* jiffies, send or check time */
|
unsigned long r_stamp; /* jiffies, send or check time */
|
||||||
unsigned long r_start_stamp; /* jiffies */
|
unsigned long r_start_stamp; /* jiffies */
|
||||||
int r_attempts;
|
int r_attempts;
|
||||||
u32 r_last_force_resend;
|
|
||||||
u32 r_map_dne_bound;
|
u32 r_map_dne_bound;
|
||||||
|
|
||||||
struct ceph_osd_req_op r_ops[];
|
struct ceph_osd_req_op r_ops[];
|
||||||
|
@ -221,7 +222,6 @@ struct ceph_osd_linger_request {
|
||||||
struct list_head pending_lworks;
|
struct list_head pending_lworks;
|
||||||
|
|
||||||
struct ceph_osd_request_target t;
|
struct ceph_osd_request_target t;
|
||||||
u32 last_force_resend;
|
|
||||||
u32 map_dne_bound;
|
u32 map_dne_bound;
|
||||||
|
|
||||||
struct timespec mtime;
|
struct timespec mtime;
|
||||||
|
|
|
@ -384,6 +384,8 @@ static void target_copy(struct ceph_osd_request_target *dest,
|
||||||
dest->flags = src->flags;
|
dest->flags = src->flags;
|
||||||
dest->paused = src->paused;
|
dest->paused = src->paused;
|
||||||
|
|
||||||
|
dest->last_force_resend = src->last_force_resend;
|
||||||
|
|
||||||
dest->osd = src->osd;
|
dest->osd = src->osd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1311,7 +1313,6 @@ enum calc_target_result {
|
||||||
|
|
||||||
static enum calc_target_result calc_target(struct ceph_osd_client *osdc,
|
static enum calc_target_result calc_target(struct ceph_osd_client *osdc,
|
||||||
struct ceph_osd_request_target *t,
|
struct ceph_osd_request_target *t,
|
||||||
u32 *last_force_resend,
|
|
||||||
bool any_change)
|
bool any_change)
|
||||||
{
|
{
|
||||||
struct ceph_pg_pool_info *pi;
|
struct ceph_pg_pool_info *pi;
|
||||||
|
@ -1332,11 +1333,10 @@ static enum calc_target_result calc_target(struct ceph_osd_client *osdc,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (osdc->osdmap->epoch == pi->last_force_request_resend) {
|
if (osdc->osdmap->epoch == pi->last_force_request_resend) {
|
||||||
if (last_force_resend &&
|
if (t->last_force_resend < pi->last_force_request_resend) {
|
||||||
*last_force_resend < pi->last_force_request_resend) {
|
t->last_force_resend = pi->last_force_request_resend;
|
||||||
*last_force_resend = pi->last_force_request_resend;
|
|
||||||
force_resend = true;
|
force_resend = true;
|
||||||
} else if (!last_force_resend) {
|
} else if (t->last_force_resend == 0) {
|
||||||
force_resend = true;
|
force_resend = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1645,7 +1645,7 @@ static void __submit_request(struct ceph_osd_request *req, bool wrlocked)
|
||||||
dout("%s req %p wrlocked %d\n", __func__, req, wrlocked);
|
dout("%s req %p wrlocked %d\n", __func__, req, wrlocked);
|
||||||
|
|
||||||
again:
|
again:
|
||||||
ct_res = calc_target(osdc, &req->r_t, &req->r_last_force_resend, false);
|
ct_res = calc_target(osdc, &req->r_t, false);
|
||||||
if (ct_res == CALC_TARGET_POOL_DNE && !wrlocked)
|
if (ct_res == CALC_TARGET_POOL_DNE && !wrlocked)
|
||||||
goto promote;
|
goto promote;
|
||||||
|
|
||||||
|
@ -2441,7 +2441,7 @@ static void linger_submit(struct ceph_osd_linger_request *lreq)
|
||||||
struct ceph_osd_client *osdc = lreq->osdc;
|
struct ceph_osd_client *osdc = lreq->osdc;
|
||||||
struct ceph_osd *osd;
|
struct ceph_osd *osd;
|
||||||
|
|
||||||
calc_target(osdc, &lreq->t, &lreq->last_force_resend, false);
|
calc_target(osdc, &lreq->t, false);
|
||||||
osd = lookup_create_osd(osdc, lreq->t.osd, true);
|
osd = lookup_create_osd(osdc, lreq->t.osd, true);
|
||||||
link_linger(osd, lreq);
|
link_linger(osd, lreq);
|
||||||
|
|
||||||
|
@ -3059,7 +3059,7 @@ recalc_linger_target(struct ceph_osd_linger_request *lreq)
|
||||||
struct ceph_osd_client *osdc = lreq->osdc;
|
struct ceph_osd_client *osdc = lreq->osdc;
|
||||||
enum calc_target_result ct_res;
|
enum calc_target_result ct_res;
|
||||||
|
|
||||||
ct_res = calc_target(osdc, &lreq->t, &lreq->last_force_resend, true);
|
ct_res = calc_target(osdc, &lreq->t, true);
|
||||||
if (ct_res == CALC_TARGET_NEED_RESEND) {
|
if (ct_res == CALC_TARGET_NEED_RESEND) {
|
||||||
struct ceph_osd *osd;
|
struct ceph_osd *osd;
|
||||||
|
|
||||||
|
@ -3130,8 +3130,7 @@ static void scan_requests(struct ceph_osd *osd,
|
||||||
n = rb_next(n); /* unlink_request(), check_pool_dne() */
|
n = rb_next(n); /* unlink_request(), check_pool_dne() */
|
||||||
|
|
||||||
dout("%s req %p tid %llu\n", __func__, req, req->r_tid);
|
dout("%s req %p tid %llu\n", __func__, req, req->r_tid);
|
||||||
ct_res = calc_target(osdc, &req->r_t,
|
ct_res = calc_target(osdc, &req->r_t, false);
|
||||||
&req->r_last_force_resend, false);
|
|
||||||
switch (ct_res) {
|
switch (ct_res) {
|
||||||
case CALC_TARGET_NO_ACTION:
|
case CALC_TARGET_NO_ACTION:
|
||||||
force_resend_writes = cleared_full ||
|
force_resend_writes = cleared_full ||
|
||||||
|
@ -3240,7 +3239,7 @@ static void kick_requests(struct ceph_osd_client *osdc,
|
||||||
erase_request(need_resend, req); /* before link_request() */
|
erase_request(need_resend, req); /* before link_request() */
|
||||||
|
|
||||||
WARN_ON(req->r_osd);
|
WARN_ON(req->r_osd);
|
||||||
calc_target(osdc, &req->r_t, NULL, false);
|
calc_target(osdc, &req->r_t, false);
|
||||||
osd = lookup_create_osd(osdc, req->r_t.osd, true);
|
osd = lookup_create_osd(osdc, req->r_t.osd, true);
|
||||||
link_request(osd, req);
|
link_request(osd, req);
|
||||||
if (!req->r_linger) {
|
if (!req->r_linger) {
|
||||||
|
|
Loading…
Reference in New Issue