Project

General

Profile

Actions

Bug #9675

closed

splitting a pool doesn't start when rule_id != ruleset_id

Added by Dan van der Ster over 9 years ago. Updated about 9 years ago.

Status:
Resolved
Priority:
High
Assignee:
Joao Eduardo Luis
Category:
-
Target version:
-
% Done:

0%

Source:
other
Tags:
Backport:
dumpling,firefly,giant
Regression:
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

78e84f34da83abf5a62ae97bb84ab70774b164a6

Dumpling 0.67.10

Rule is like this:

{ "rule_id": 6,
"rule_name": "castor",
"ruleset": 7,
"type": 1,
"min_size": 1,
"max_size": 10,
"steps": [ { "op": "take",
"item": -21}, { "op": "chooseleaf_firstn",
"num": 0,
"type": "host"}, { "op": "emit"}]}]

Then:

ceph osd pool create testsplit 64
  1. default ruleset is 0
    ceph osd pool set testsplit pg_num 65
  2. new pg is created correctly
    ceph osd pool set testsplit crush_ruleset 7
  3. pgs are moved correctly to the other root
    ceph osd pool set testsplit pg_num 66
  4. new pg is not created
    ceph osd pool set testsplit crush_ruleset 0
  5. 65 pgs moved to default root, 66th pg still not created.
    ceph osd pool set testsplit pg_num 67
  6. 66th and 67th pgs are created.
Actions #1

Updated by Dan van der Ster over 9 years ago

Sorry for formatting... should be like this:

ceph osd pool create testsplit 64
# default ruleset is 0
ceph osd pool set testsplit pg_num 65
# new pg is created correctly
ceph osd pool set testsplit crush_ruleset 7
# pgs are moved correctly to the other root
ceph osd pool set testsplit pg_num 66
# new pg is not created
ceph osd pool set testsplit crush_ruleset 0
# 65 pgs moved to default root, 66th pg still not created.
ceph osd pool set testsplit pg_num 67
# 66th and 67th pgs are created.

Workaround was to insert a dummy 6th ruleset to make ruleset_id=rule_id=7 for the castor pool. Then pg splitting worked as expected.

Actions #2

Updated by Samuel Just over 9 years ago

  • Assignee set to Joao Eduardo Luis
  • Priority changed from Normal to High
Actions #3

Updated by Loïc Dachary over 9 years ago

See also the ceph-user thread "NO pg created for erasure-coded pool" where rule_id != ruleset on firefly.

Actions #4

Updated by Joao Eduardo Luis over 9 years ago

  • Status changed from New to In Progress
Actions #5

Updated by Joao Eduardo Luis over 9 years ago

  • Status changed from In Progress to Pending Backport
Actions #6

Updated by Loïc Dachary over 9 years ago

Note that this patch will not change existing crushmaps, it will just make new rules using matching ruleset_id == rule_id. I guess there also is a need to fix whatever fails because it uses rule_id instead of ruleset_id for existing crushmap.

Actions #7

Updated by Samuel Just over 9 years ago

Backported to firefly.

Actions #8

Updated by Loïc Dachary over 9 years ago

  • Description updated (diff)
Actions #10

Updated by Loïc Dachary about 9 years ago

970a797 CrushWrapper: pick a ruleset same as rule_id (in giant), b9450b5 CrushWrapper: pick a ruleset same as rule_id (in firefly), 309c74d CrushWrapper: pick a ruleset same as rule_id (in dumpling),

Actions #11

Updated by Loïc Dachary about 9 years ago

  • Status changed from Pending Backport to Resolved
Actions

Also available in: Atom PDF