| #!/bin/sh |
| # Copyright (C) 2016 Red Hat, Inc. All rights reserved. |
| # |
| # This copyrighted material is made available to anyone wishing to use, |
| # modify, copy, or redistribute it subject to the terms and conditions |
| # of the GNU General Public License v.2. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with this program; if not, write to the Free Software Foundation, |
| # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| |
| # Exercise changing of caching mode on both cache pool and cached LV. |
| |
| SKIP_WITH_LVMLOCKD=1 |
| SKIP_WITH_LVMPOLLD=1 |
| |
| . lib/inittest |
| |
| aux have_cache 1 5 0 || skip |
| |
| aux prepare_vg 2 |
| |
| lvcreate --type cache-pool -L18 -n cpool $vg "$dev1" |
| lvcreate -H -L14 -n $lv1 --cachemode writeback --cachesettings migration_threshold=204800 --cachepool $vg/cpool $vg "$dev2" |
| |
| #cat "$DM_DEV_DIR/$vg/$lv1" >/dev/null |
| #aux delay_dev "$dev2" 300 1000 $(get first_extent_sector "$dev2"): |
| |
| #dmsetup status $vg-$lv1 |
| #dmsetup table $vg-$lv1 |
| |
| for i in $(seq 1 10) ; do |
| echo 3 >/proc/sys/vm/drop_caches |
| dd if=/dev/zero of="$DM_DEV_DIR/$vg/$lv1" bs=64K count=20 conv=fdatasync || true |
| echo 3 >/proc/sys/vm/drop_caches |
| dd if="$DM_DEV_DIR/$vg/$lv1" of=/dev/null bs=64K count=20 || true |
| done |
| |
| lvs -o+cache_dirty_blocks,cache_read_hits,cache_read_misses,cache_write_hits,cache_write_misses $vg/$lv1 |
| |
| vgcfgbackup -f /tmp/ooo $vg |
| |
| |
| # |
| # Drop later, code loading dm tables directly without lvm |
| # RHBZ 1337588 |
| # |
| #dmsetup table |
| #echo "STATUS before cleaner" |
| #dmsetup status |
| #dmsetup load --table "0 28672 cache 253:4 253:3 253:5 128 1 writethrough cleaner 0" $vg-$lv1 |
| #dmsetup resume $vg-$lv1 |
| #sleep 1 |
| #dmsetup table |
| #echo "STATUS after cleaner 1sec" |
| #dmsetup status --noflush |
| #dmsetup suspend --noflush $vg-$lv1 |
| #dmsetup resume $vg-$lv1 |
| |
| #dmsetup load --table "0 28672 cache 253:4 253:3 253:5 128 1 passthrough smq 2 migration_threshold 204800" $vg-$lv1 |
| #dmsetup status $vg-$lv1 |
| #dmsetup load --table "0 28672 cache 253:4 253:3 253:5 128 1 writethrough smq 2 migration_threshold 204800" $vg-$lv1 |
| #dmsetup resume $vg-$lv1 |
| #dmsetup status $vg-$lv1 |
| #dmsetup table $vg-$lv1 |
| #dmsetup ls --tree |
| #exit |
| |
| check lv_field $vg/$lv1 cache_mode "writeback" |
| lvchange --cachemode passthrough $vg/$lv1 |
| check lv_field $vg/$lv1 cache_mode "passthrough" |
| lvchange --cachemode writethrough $vg/$lv1 |
| check lv_field $vg/$lv1 cache_mode "writethrough" |
| lvchange --cachemode writeback $vg/$lv1 |
| check lv_field $vg/$lv1 cache_mode "writeback" |
| |
| lvconvert --splitcache $vg/$lv1 |
| |
| lvs -a $vg |
| |
| check lv_field $vg/cpool cache_mode "writeback" |
| lvchange --cachemode passthrough $vg/cpool |
| check lv_field $vg/cpool cache_mode "passthrough" |
| lvchange --cachemode writethrough $vg/cpool |
| check lv_field $vg/cpool cache_mode "writethrough" |
| lvchange --cachemode writeback $vg/cpool |
| check lv_field $vg/cpool cache_mode "writeback" |
| |
| lvs -a $vg |
| |
| vgremove -f $vg |