diff options
author | Ilya Dryomov <idryomov@gmail.com> | 2017-06-21 17:27:18 +0200 |
---|---|---|
committer | Ilya Dryomov <idryomov@gmail.com> | 2017-07-07 17:25:18 +0200 |
commit | 463bb8da5042c165bf50ae2688d251c5af26f3cf (patch) | |
tree | 8772b819f58a223e5ab063d93610c07b31d9a1b8 /net/ceph | |
parent | 6f428df47dae2c8ea31fd4c0c74a12a8a5ac2d1d (diff) | |
download | linux-463bb8da5042c165bf50ae2688d251c5af26f3cf.tar.gz linux-463bb8da5042c165bf50ae2688d251c5af26f3cf.tar.bz2 linux-463bb8da5042c165bf50ae2688d251c5af26f3cf.zip |
libceph: compute actual pgid in ceph_pg_to_up_acting_osds()
Move raw_pg_to_pg() call out of get_temp_osds() and into
ceph_pg_to_up_acting_osds(), for upcoming apply_upmap().
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'net/ceph')
-rw-r--r-- | net/ceph/osdmap.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/net/ceph/osdmap.c b/net/ceph/osdmap.c index a3f60d0bfd13..245c8025ab44 100644 --- a/net/ceph/osdmap.c +++ b/net/ceph/osdmap.c @@ -2284,18 +2284,16 @@ static void apply_primary_affinity(struct ceph_osdmap *osdmap, */ static void get_temp_osds(struct ceph_osdmap *osdmap, struct ceph_pg_pool_info *pi, - const struct ceph_pg *raw_pgid, + const struct ceph_pg *pgid, struct ceph_osds *temp) { - struct ceph_pg pgid; struct ceph_pg_mapping *pg; int i; - raw_pg_to_pg(pi, raw_pgid, &pgid); ceph_osds_init(temp); /* pg_temp? */ - pg = lookup_pg_mapping(&osdmap->pg_temp, &pgid); + pg = lookup_pg_mapping(&osdmap->pg_temp, pgid); if (pg) { for (i = 0; i < pg->pg_temp.len; i++) { if (ceph_osd_is_down(osdmap, pg->pg_temp.osds[i])) { @@ -2318,7 +2316,7 @@ static void get_temp_osds(struct ceph_osdmap *osdmap, } /* primary_temp? */ - pg = lookup_pg_mapping(&osdmap->primary_temp, &pgid); + pg = lookup_pg_mapping(&osdmap->primary_temp, pgid); if (pg) temp->primary = pg->primary_temp.osd; } @@ -2336,14 +2334,16 @@ void ceph_pg_to_up_acting_osds(struct ceph_osdmap *osdmap, struct ceph_osds *up, struct ceph_osds *acting) { + struct ceph_pg pgid; u32 pps; WARN_ON(pi->id != raw_pgid->pool); + raw_pg_to_pg(pi, raw_pgid, &pgid); pg_to_raw_osds(osdmap, pi, raw_pgid, up, &pps); raw_to_up_osds(osdmap, pi, up); apply_primary_affinity(osdmap, pi, pps, up); - get_temp_osds(osdmap, pi, raw_pgid, acting); + get_temp_osds(osdmap, pi, &pgid, acting); if (!acting->size) { memcpy(acting->osds, up->osds, up->size * sizeof(up->osds[0])); acting->size = up->size; |