summaryrefslogtreecommitdiff
path: root/common/dmlogwrites
diff options
context:
space:
mode:
authorXiao Yang <yangx.jy@fujitsu.com>2022-11-14 08:35:02 +0000
committerZorro Lang <zlang@kernel.org>2022-11-23 11:55:03 +0800
commitda2e198c3fa536012c2f8cb8e3741c46605ae01b (patch)
tree20713ad161353e37f134d1eaf81be17ded0815c3 /common/dmlogwrites
parentd6deed033681643118cbeea0bc8841f2ee5327f1 (diff)
common/dmlogwrites: Extend _log_writes_init() to accept the specified length
It is unnecssary to always create a dm-log-writes device based on the entire size of the target/underlying device. Signed-off-by: Xiao Yang <yangx.jy@fujitsu.com> Reviewed-by: Darrick J. Wong <djwong@kernel.org> Signed-off-by: Zorro Lang <zlang@kernel.org>
Diffstat (limited to 'common/dmlogwrites')
-rw-r--r--common/dmlogwrites18
1 files changed, 16 insertions, 2 deletions
diff --git a/common/dmlogwrites b/common/dmlogwrites
index 9fa1c977..c1c85de9 100644
--- a/common/dmlogwrites
+++ b/common/dmlogwrites
@@ -59,14 +59,28 @@ _require_log_writes_dax_mountopt()
fi
}
+# Set up a dm-log-writes device
+#
+# blkdev: the specified target device
+# length(optional): the mapped length in bytes
+# Note that the entire size of the target device will be used
+# if length is not specified.
_log_writes_init()
{
- blkdev=$1
+ local blkdev=$1
+ local length=$2
+ local BLK_DEV_SIZE
[ -z "$blkdev" ] && _fail \
"block dev must be specified for _log_writes_init"
- local BLK_DEV_SIZE=`blockdev --getsz $blkdev`
+ if [ -z "$length" ]; then
+ BLK_DEV_SIZE=`blockdev --getsz $blkdev`
+ else
+ local blksz=`blockdev --getss $blkdev`
+ BLK_DEV_SIZE=$((length / blksz))
+ fi
+
LOGWRITES_NAME=logwrites-test
LOGWRITES_DMDEV=/dev/mapper/$LOGWRITES_NAME
LOGWRITES_TABLE="0 $BLK_DEV_SIZE log-writes $blkdev $LOGWRITES_DEV"