Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

erasure code feature #2551

Merged
2 commits merged into from Sep 23, 2014
Merged

erasure code feature #2551

2 commits merged into from Sep 23, 2014

Conversation

@ghost
Copy link

ghost commented Sep 22, 2014

formerly #2397 rebased against giant

Signed-off-by: Loic Dachary <loic-201408@dachary.org>
@ghost

This comment has been minimized.

Copy link
Author

ghost commented Sep 22, 2014

@jecluis it passes monthrash, with one exception which turns out to be http://tracker.ceph.com/issues/9508 that was fixed a few days ago. http://ceph.com/gitbuilder.cgi is happy and the patch was rebased against giant. What do you think ?

@jecluis

This comment has been minimized.

Copy link
Member

jecluis commented Sep 23, 2014

looks good

@ghost

This comment has been minimized.

Copy link
Author

ghost commented Sep 23, 2014

@jecluis the trailing is a leftover, thanks for noticing :-)

There are two new plugins (isa and lrc). When upgrading a cluster, there
must be a protection against the following scenario:

  * the mon are upgraded but not the osd
  * a new pool is created using plugin isa
  * the osd fail to load the isa plugin because they have not been
    upgraded

A feature bit is added : PLUGINS_V2. The monitor will only agree to
create an erasure code profile for the isa or lrc plugin if all OSDs
supports PLUGINS_V2. Once such an erasure code profile is stored in the
OSDMap, an OSD can only boot if it supports the PLUGINS_V2 feature,
which means it is able to load the isa and lrc plugins.

The monitors will only activate the PLUGINS_V2 feature if all monitors
in the quorum support it. It protects against the following scenario:

  * the leader is upgraded the peons are not upgraded
  * the leader creates a pool with plugin=lrc because all OSD have
    the PLUGINS_V2 feature
  * the leader goes down and a non upgraded peon becomes the leader
  * an old OSD tries to join the cluster
  * the new leader will let the OSD boot because it does not contain
    the logic that would excluded it
  * the old OSD will fail when required to load the plugin lrc

This is going to be needed each time new plugins are added, which is
impractical. A more generic plugin upgrade support should be added
instead, as described in http://tracker.ceph.com/issues/7291.

http://tracker.ceph.com/issues/9343 Refs: #9343

Signed-off-by: Loic Dachary <loic-201408@dachary.org>
ghost pushed a commit that referenced this pull request Sep 23, 2014
erasure code feature

Reviewed-by: João Eduardo Luís <joao@redhat.com>
@ghost ghost merged commit 9d3fbe9 into ceph:giant Sep 23, 2014
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
1 participant
You can’t perform that action at this time.