]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
libceph: drop need_resend from calc_target()
authorIlya Dryomov <idryomov@gmail.com>
Thu, 15 Jun 2017 14:30:54 +0000 (16:30 +0200)
committerIlya Dryomov <idryomov@gmail.com>
Fri, 7 Jul 2017 15:25:16 +0000 (17:25 +0200)
Replace it with more fine-grained bools to separate updating
ceph_osd_request_target fields and the decision to resend.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
net/ceph/osd_client.c

index eaaf17e7c37b28b6c28db19b56fa44f137dfa33e..4143f73590f355b6db6e123636425dabab74b7ee 100644 (file)
@@ -1325,8 +1325,9 @@ static enum calc_target_result calc_target(struct ceph_osd_client *osdc,
        struct ceph_pg pgid, last_pgid;
        struct ceph_osds up, acting;
        bool force_resend = false;
+       bool unpaused = false;
+       bool legacy_change;
        bool need_check_tiering = false;
-       bool need_resend = false;
        bool sort_bitwise = ceph_osdmap_flag(osdc, CEPH_OSDMAP_SORTBITWISE);
        enum calc_target_result ct_res;
        int ret;
@@ -1393,12 +1394,12 @@ static enum calc_target_result calc_target(struct ceph_osd_client *osdc,
 
        if (t->paused && !target_should_be_paused(osdc, t, pi)) {
                t->paused = false;
-               need_resend = true;
+               unpaused = true;
        }
+       legacy_change = ceph_pg_compare(&t->pgid, &pgid) ||
+                       ceph_osds_changed(&t->acting, &acting, any_change);
 
-       if (ceph_pg_compare(&t->pgid, &pgid) ||
-           ceph_osds_changed(&t->acting, &acting, any_change) ||
-           force_resend) {
+       if (legacy_change || force_resend) {
                t->pgid = pgid; /* struct */
                ceph_pg_to_primary_shard(osdc->osdmap, &pgid, &t->spgid);
                ceph_osds_copy(&t->acting, &acting);
@@ -1410,10 +1411,13 @@ static enum calc_target_result calc_target(struct ceph_osd_client *osdc,
                t->sort_bitwise = sort_bitwise;
 
                t->osd = acting.primary;
-               need_resend = true;
        }
 
-       ct_res = need_resend ? CALC_TARGET_NEED_RESEND : CALC_TARGET_NO_ACTION;
+       if (unpaused || legacy_change || force_resend)
+               ct_res = CALC_TARGET_NEED_RESEND;
+       else
+               ct_res = CALC_TARGET_NO_ACTION;
+
 out:
        dout("%s t %p -> ct_res %d osd %d\n", __func__, t, ct_res, t->osd);
        return ct_res;