diff options
Diffstat (limited to 'net/ceph/osdmap.c')
-rw-r--r-- | net/ceph/osdmap.c | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/net/ceph/osdmap.c b/net/ceph/osdmap.c index d69d23556f0c..aade4a5c1c07 100644 --- a/net/ceph/osdmap.c +++ b/net/ceph/osdmap.c | |||
@@ -519,8 +519,8 @@ static int __decode_pool(void **p, void *end, struct ceph_pg_pool_info *pi) | |||
519 | pr_warning("got v %d < 5 cv %d of ceph_pg_pool\n", ev, cv); | 519 | pr_warning("got v %d < 5 cv %d of ceph_pg_pool\n", ev, cv); |
520 | return -EINVAL; | 520 | return -EINVAL; |
521 | } | 521 | } |
522 | if (cv > 7) { | 522 | if (cv > 9) { |
523 | pr_warning("got v %d cv %d > 7 of ceph_pg_pool\n", ev, cv); | 523 | pr_warning("got v %d cv %d > 9 of ceph_pg_pool\n", ev, cv); |
524 | return -EINVAL; | 524 | return -EINVAL; |
525 | } | 525 | } |
526 | len = ceph_decode_32(p); | 526 | len = ceph_decode_32(p); |
@@ -548,12 +548,34 @@ static int __decode_pool(void **p, void *end, struct ceph_pg_pool_info *pi) | |||
548 | *p += len; | 548 | *p += len; |
549 | } | 549 | } |
550 | 550 | ||
551 | /* skip removed snaps */ | 551 | /* skip removed_snaps */ |
552 | num = ceph_decode_32(p); | 552 | num = ceph_decode_32(p); |
553 | *p += num * (8 + 8); | 553 | *p += num * (8 + 8); |
554 | 554 | ||
555 | *p += 8; /* skip auid */ | 555 | *p += 8; /* skip auid */ |
556 | pi->flags = ceph_decode_64(p); | 556 | pi->flags = ceph_decode_64(p); |
557 | *p += 4; /* skip crash_replay_interval */ | ||
558 | |||
559 | if (ev >= 7) | ||
560 | *p += 1; /* skip min_size */ | ||
561 | |||
562 | if (ev >= 8) | ||
563 | *p += 8 + 8; /* skip quota_max_* */ | ||
564 | |||
565 | if (ev >= 9) { | ||
566 | /* skip tiers */ | ||
567 | num = ceph_decode_32(p); | ||
568 | *p += num * 8; | ||
569 | |||
570 | *p += 8; /* skip tier_of */ | ||
571 | *p += 1; /* skip cache_mode */ | ||
572 | |||
573 | pi->read_tier = ceph_decode_64(p); | ||
574 | pi->write_tier = ceph_decode_64(p); | ||
575 | } else { | ||
576 | pi->read_tier = -1; | ||
577 | pi->write_tier = -1; | ||
578 | } | ||
557 | 579 | ||
558 | /* ignore the rest */ | 580 | /* ignore the rest */ |
559 | 581 | ||