summaryrefslogtreecommitdiff
path: root/test/shell/lvchange-cache-mode.sh
diff options
context:
space:
mode:
Diffstat (limited to 'test/shell/lvchange-cache-mode.sh')
-rw-r--r--test/shell/lvchange-cache-mode.sh90
1 files changed, 90 insertions, 0 deletions
diff --git a/test/shell/lvchange-cache-mode.sh b/test/shell/lvchange-cache-mode.sh
new file mode 100644
index 0000000..a50dfd4
--- /dev/null
+++ b/test/shell/lvchange-cache-mode.sh
@@ -0,0 +1,90 @@
+#!/usr/bin/env bash
+
+# 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_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 oflag=direct || true
+echo 3 >/proc/sys/vm/drop_caches
+dd if="$DM_DEV_DIR/$vg/$lv1" of=/dev/null bs=64K count=20 oflag=direct || true
+done
+
+lvs -o+cache_dirty_blocks,cache_read_hits,cache_read_misses,cache_write_hits,cache_write_misses $vg/$lv1
+
+
+#
+# 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