]> sourceware.org Git - lvm2.git/commitdiff
pools: workaround hints
authorZdenek Kabelac <zkabelac@redhat.com>
Sun, 26 Oct 2014 18:45:17 +0000 (19:45 +0100)
committerZdenek Kabelac <zkabelac@redhat.com>
Sun, 26 Oct 2014 18:45:17 +0000 (19:45 +0100)
Missing code for stacked hint estimation

lib/metadata/pool_manip.c
test/shell/lvconvert-cache-raid.sh

index b84950cb30e5aa6fb687cf6435664052337d5ec9..d1b4497132753eb6b062cd8fd796f8340847552b 100644 (file)
@@ -324,16 +324,25 @@ int recalculate_pool_chunk_size_with_dev_hints(struct logical_volume *pool_lv,
 
        pool_data_lv = seg_lv(first_seg(pool_lv), 0);
        dm_list_iterate_items(seg, &pool_data_lv->segments) {
-               pv = seg_pv(seg, 0);
-               if (chunk_size_calc_policy == THIN_CHUNK_SIZE_CALC_METHOD_PERFORMANCE)
-                       hint = dev_optimal_io_size(cmd->dev_types, pv_dev(pv));
-               else
-                       hint = dev_minimum_io_size(cmd->dev_types, pv_dev(pv));
-               if (!hint)
-                       continue;
-               if (previous_hint)
-                       hint = _lcm(previous_hint, hint);
-               previous_hint = hint;
+               switch (seg_type(seg, 0)) {
+               case AREA_PV:
+                       pv = seg_pv(seg, 0);
+                       if (chunk_size_calc_policy == THIN_CHUNK_SIZE_CALC_METHOD_PERFORMANCE)
+                               hint = dev_optimal_io_size(cmd->dev_types, pv_dev(pv));
+                       else
+                               hint = dev_minimum_io_size(cmd->dev_types, pv_dev(pv));
+                       if (!hint)
+                               continue;
+
+                       if (previous_hint)
+                               hint = _lcm(previous_hint, hint);
+                       previous_hint = hint;
+                       break;
+               case AREA_LV:
+                       /* FIXME: hint for stacked (raid) LVs - estimate geometry from LV ?? */
+               default:
+                       break;
+               }
        }
 
        if (!hint)
index 3ac2d0b81e6bb436f8ec495bbaa687e8cddc0f73..16dd38e286260613d5475bc50bc657731a5b5183 100644 (file)
@@ -46,6 +46,7 @@ lvremove -f $vg
 
 lvcreate -n cpool_meta -m 1 --type raid1 -l 10 $vg
 lvcreate -n cpool -m 1 --type raid1 -l 10 $vg
+lvs -a -o+seg_pe_ranges $vg
 lvconvert --yes --type cache-pool --poolmetadata $vg/cpool_meta $vg/cpool
 lvcreate -n corigin --type cache --cachepool $vg/cpool -l 10
 
This page took 0.03922 seconds and 5 git commands to generate.