mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-22 17:35:59 +03:00
109 lines
3.0 KiB
Bash
109 lines
3.0 KiB
Bash
#!/bin/sh
|
|
# Copyright (C) 2014 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
|
. lib/test
|
|
|
|
aux target_at_least dm-cache 1 3 0 || skip
|
|
|
|
aux prepare_vg 5 80
|
|
|
|
for mode in "" "--cachemode writethrough"
|
|
do
|
|
|
|
####################
|
|
# Cache_Pool creation
|
|
####################
|
|
|
|
# Full CLI (the advertised form)
|
|
lvcreate --type cache-pool -l 1 -n cache_pool $vg $mode
|
|
lvremove -f $vg/cache_pool
|
|
|
|
# Shorthand CLI (not advertised) -- not yet implemented
|
|
# lvcreate --cache -l 1 vg
|
|
# lvremove -ff $vg
|
|
|
|
# Shorthand CLI (not advertised) -- not yet implemented
|
|
# lvcreate -H -l 1 vg
|
|
# lvremove -ff $vg
|
|
|
|
################
|
|
# Cache creation
|
|
# Creating a cache is a two phase process
|
|
# - first, cache_pool (or origin)
|
|
# - then, the cache LV (lvcreate distinguishes supplied origin vs cache_pool)
|
|
################
|
|
|
|
# Create cache_pool, then origin with cache, then remove all
|
|
lvcreate --type cache-pool -l 1 -n cache_pool $vg
|
|
lvcreate --type cache -l 2 $vg/cache_pool -n $lv1 $mode
|
|
dmsetup table ${vg}-$lv1 | grep cache # ensure it is loaded in kernel
|
|
lvremove -f $vg
|
|
|
|
# Create cache_pool, then origin with cache, then remove cache_pool/cache
|
|
lvcreate --type cache-pool -l 1 -n cache_pool $vg
|
|
lvcreate --type cache -l 2 $vg/cache_pool -n $lv1 $mode
|
|
lvremove -f $vg/cache_pool
|
|
lvremove -f $vg/$lv1
|
|
|
|
# Create cache_pool, then origin with cache, then remove origin
|
|
lvcreate --type cache-pool -l 1 -n cache_pool $vg
|
|
lvcreate --type cache -l 2 $vg/cache_pool -n $lv1 $mode
|
|
lvremove -f $vg/$lv1
|
|
lvremove -f $vg/cache_pool
|
|
|
|
# Shorthand CLI (cache_pool exists, create origin w/ cache)
|
|
#lvcreate --type cache-pool -l 1 -n cache_pool $vg
|
|
#lvcreate --cache -l 2 $vg/cache_pool -n $lv1
|
|
#lvremove -f $vg
|
|
|
|
# Shorthand CLI (cache_pool exists, create origin w/ cache)
|
|
#lvcreate --type cache-pool -l 1 -n cache_pool $vg
|
|
#lvcreate -H -l 2 $vg/cache_pool -n $lv1
|
|
#lvremove -f $vg
|
|
|
|
if [ 1 -eq 0 ]; then
|
|
# Create origin, then cache_pool and cache
|
|
# FIXME: This case needs to use lvconvert
|
|
lvcreate -l 2 -n $lv1 $vg
|
|
lvconvert --type cache -l 1 $vg/$lv1 $mode
|
|
dmsetup table ${vg}-$lv1 | grep cache # ensure it is loaded in kernel
|
|
lvremove -ff $vg
|
|
fi
|
|
|
|
# Shorthand CLI (origin exists, create cache_pool and cache)
|
|
#lvcreate -l 1 -n $lv1 $vg
|
|
#lvcreate --cache -l 2 $vg/$lv1
|
|
#lvremove -ff $vg
|
|
|
|
# Shorthand CLI (origin exists, create cache_pool and cache)
|
|
#lvcreate -l 1 -n $lv1 $vg
|
|
#lvcreate -H -l 2 $vg/$lv1
|
|
#lvremove -ff $vg
|
|
|
|
done
|
|
|
|
##############################
|
|
# Test things that should fail
|
|
##############################
|
|
|
|
# Attempt to create smaller cache than origin should fail
|
|
lvcreate -l 1 -n $lv1 $vg
|
|
not lvcreate --type cache -l 2 $vg/$lv1
|
|
|
|
|
|
# Option testing
|
|
# --chunksize
|
|
# --cachepolicy
|
|
# --poolmetadatasize
|
|
# --poolmetadataspare
|
|
|
|
vgremove -ff $vg
|