blob: 9c7b7a0151df746c0f22f380eac0e1ec424e971f [file] [log] [blame]
#!/bin/bash -Ex
# SPDX-License-Identifier: GPL-2.0
# Copyright(c) 2018 Intel Corporation. All rights reserved.
dev=""
size=""
blockdev=""
rc=77
. ./common
trap 'err $LINENO' ERR
# sample json:
#{
# "dev":"namespace5.0",
# "mode":"sector",
# "size":"60.00 MiB (62.92 MB)",
# "uuid":"f1baa71a-d165-4da4-bb6a-083a2b0e6469",
# "blockdev":"pmem5s",
#}
check_min_kver "4.16" || do_skip "may not contain fixes for partition rescanning"
check_prereq "parted"
check_prereq "blockdev"
reset()
{
$NDCTL disable-region -b $NFIT_TEST_BUS0 all
$NDCTL zero-labels -b $NFIT_TEST_BUS0 all
$NDCTL enable-region -b $NFIT_TEST_BUS0 all
}
test_mode()
{
local mode="$1"
# create namespace
json=$($NDCTL create-namespace -b $NFIT_TEST_BUS0 -t pmem -m "$mode")
rc=2
eval "$(echo "$json" | json2var)"
[ -n "$dev" ] || err "$LINENO"
[ -n "$size" ] || err "$LINENO"
[ -n "$blockdev" ] || err "$LINENO"
[ $size -gt 0 ] || err "$LINENO"
rc=1
# create partition
parted --script /dev/$blockdev mklabel gpt mkpart primary 1MiB 10MiB
# verify it is created
sleep 1
blockdev --rereadpt /dev/$blockdev
sleep 1
partdev="$(grep -Eo "${blockdev}.+" /proc/partitions)"
test -b /dev/$partdev
# cycle the namespace, and verify the partition is read
# without needing to do a blockdev --rereadpt
$NDCTL disable-namespace $dev
$NDCTL enable-namespace $dev
if [ -b /dev/$partdev ]; then
echo "mode: $mode - partition read successful"
else
echo "mode: $mode - partition read failed"
rc=1
err "$LINENO"
fi
$NDCTL disable-namespace $dev
$NDCTL destroy-namespace $dev
}
modprobe nfit_test
rc=1
reset
test_mode "raw"
test_mode "fsdax"
test_mode "sector"
_cleanup
exit 0