Project

General

Profile

Bug #11493

Updated by Sage Weil almost 9 years ago

1. images had snapshots (and removed_snaps) 

 2. images was added as a tier *of* img, and img's removed_snaps was copied 
 to images, clobbering the removed_snaps value (see 
 OSDMap::Incremental::propagate_snaps_to_tiers) 

 3. tiering relation was undone, but removed_snaps was still gone 

 4. on OSD startup, when we load the PG, removed_snaps is initialized with 
 the older map.    later, in PGPool::update(), we assume that removed_snaps 
 alwasy grows (never shrinks) and we trigger an assert. 

 To fix this I think we need to do 2 things: 

 1. make the OSD forgiving out removed_snaps getting smaller.    This is    
 probably a good thing anyway: once we know snaps are removed on all OSDs 
 we can prune the interval_set in the OSDMap.    Maybe. 

 2. Fix the mon to prevent this from happening, *even* when 
 --force-nonempty is specified.    (This is the root cause.) 

Back