OpenSolaris

Printable Version Enter a New Search
Bug ID 4852783
Synopsis reduce pool capacity
State 6-Fix Understood (Fix is known)
Category:Subcategory kernel:zfs
Keywords Athlone | s10u3beta | time=3 | z-triage
Responsible Engineer Matthew Ahrens
Reported Against s10 , 5.10 , s10_35 , s10_60 , generic , s10u2_06 , s10u3_05 , s10u3_fcs , s10u6_fcs , s10u7_fcs , solaris_10 , solaris_10u4 , solaris_10u5 , solaris_10u6
Duplicate Of
Introduced In
Commit to Fix
Fixed In
Release Fixed
Related Bugs 6273505 , 6487860 , 6844090 , 6884096 , 4879345
Submit Date 23-April-2003
Last Update Date 11-November-2009
Description
 xxxxx@xxxxx.com 2003-04-23

We should be able to remove top-level vdevs (tl-vdevs) from the pool, reducing
total capacity, if there is enough free space in the pool.  Note, this 
free space must be free usable space - "hot space" doesn't count because
presumably the administrator wants to maintin their hot space policy.  
If they don't want to, they should conver the hot space to regular space
and then reduce the pool's capacity.

We can do this by migrating all the non-stem, non-hot metaslabs off of the
tl-vdev we're trying to remove.  These metaslabs should replace stem
(ie. empty) slabs on other tl-vdevs.

That much is easy.  However, the pool may have plenty of free space 
(ie. unused blocks), but not enough stem slabs (ie. unused slabs),
due to fragmentation of free space.  We need to be able to relocate 
individual blocks to compact the free space so that entire metaslabs
are free.  Then we can "re-stem-ify" the entirely-free metaslabs
so that we'll have enough stem slabs to perform the migration/removal.

Relocating individual blocks is a challenge, especially in conjunction
with snapshots.
Work Around
N/A
Comments
N/A