Project

General

Profile

Subtask #7292

Updated by Loïc Dachary about 10 years ago

The goal is * Add const CompatSet &get_compat() const to allow Giant to install upgraded backward compatible erasure-code ErasureCodeInterface 
 * plugins so that pools created with Firefly erasure-code plugins keep working. Only once the whole cluster do not support "V0" are ignored, as if they did not exist 
 * ErasureCodeInteface is upgraded documented to Giant will explain that feature "V0" is mandatory 

 This has the new behavior of same effect as if the erasure-code erasure code plugins become available. 

 * const CompatSet &ErasureCodeInterface::get_compat() const retrieve were statically linked with every osd or mon because there is no upgrade path for the plugin capabilities 
 * CompatSet ErasureCodeInterface::set_compat() forces a subset of the supported capabilities plugins. Firefly mons and osd will require the jerasure plugin is expected to behave accordingly, i.e. switch to backward compatibility mode. 
 * When a new pool as "V0" even if "V1" is created get_compat() is stored into pg_pool_t::properties as compat_set=XXXXX 
 * Ceph feature CEPH_FEATURE_OSD_ERASURE_CODES implies compatset("BASE") 
 * In the future Ceph feature CEPH_FEATURE_OSD_ERASURE_CODES_V1 available. 

 Giant will map to compatset("BASE,SOMETHING"). New pools introduce a generic plugin system and it will be created with this compatset only when presumably provide more flexibility. In the whole cluster meantime Firefly is upgraded. 
 * Existing pools keep protected from accidentally using the compatset they were created with. The plugins that are expected to be backward compatible and support the behavior matching the old compatset. 

 not "V0"

Back