Re: [PATCH blktests v3 08/12] nvme/rc: Add minimal test image size requirement

Shinichiro Kawasaki
2023-05-07T23:19:38Z

Nit: the commit title subject can be "nvme: " since it touches both nvme/rc and
nvme test cases.

On May 03, 2023 / 10:02, Daniel Wagner wrote:
> Some tests need a minimal test image size to work correctly. Thus add a
> helper to check the size and update these tests accordingly.
>
> The image minimum is 4M because some of the test have hard coded values.
> All tests which use the xfs fio verification job have a minimum
> requirement of 350M impossed by the xfs filesystem.
>
> Reviewed-by: Hannes Reinecke <hare@suse.de>
> Signed-off-by: Daniel Wagner <dwagner@suse.de>
> ---
> tests/nvme/012 | 1 +
> tests/nvme/013 | 1 +
> tests/nvme/029 | 1 -
> tests/nvme/045 | 2 +-
> tests/nvme/rc | 15 +++++++++++++++
> 5 files changed, 18 insertions(+), 2 deletions(-)
>
> diff --git a/tests/nvme/012 b/tests/nvme/012
> index ecf44fcb5a51..efe227538c57 100755
> --- a/tests/nvme/012
> +++ b/tests/nvme/012
> @@ -16,6 +16,7 @@ requires() {
> _have_fio
> _have_loop
> _require_nvme_trtype_is_fabrics
> + _require_nvme_test_img_size 350m
> }
>
> test() {
> diff --git a/tests/nvme/013 b/tests/nvme/013
> index e249add46295..14e646a19c47 100755
> --- a/tests/nvme/013
> +++ b/tests/nvme/013
> @@ -15,6 +15,7 @@ requires() {
> _have_xfs
> _have_fio
> _require_nvme_trtype_is_fabrics
> + _require_nvme_test_img_size 350m
> }
>
> test() {
> diff --git a/tests/nvme/029 b/tests/nvme/029
> index 1808b7b0edf1..c6d38b42af70 100755
> --- a/tests/nvme/029
> +++ b/tests/nvme/029
> @@ -14,7 +14,6 @@ requires() {
> _nvme_requires
> _have_loop
> _require_nvme_trtype_is_fabrics
> - _require_test_dev_size 1M

As I mentioned for the previous patch, this line was added and removed.

> }
>
> test_user_io()
> diff --git a/tests/nvme/045 b/tests/nvme/045
> index 7c51da27b5f1..99012f6bed8f 100755
> --- a/tests/nvme/045
> +++ b/tests/nvme/045
> @@ -120,7 +120,7 @@ test() {
>
> nvmedev=$(_find_nvme_dev "${subsys_name}")
>
> - _run_fio_rand_io --size=8m --filename="/dev/${nvmedev}n1"
> + _run_fio_rand_io --size=4m --filename="/dev/${nvmedev}n1"
>
> _nvme_disconnect_subsys "${subsys_name}"
>
> diff --git a/tests/nvme/rc b/tests/nvme/rc
> index 51dde39c2966..0b4d5f6570d6 100644
> --- a/tests/nvme/rc
> +++ b/tests/nvme/rc
> @@ -21,6 +21,7 @@ nvme_img_size=${nvme_img_size:-"1G"}
>
> _nvme_requires() {
> _have_program nvme
> + _require_nvme_test_img_size 4m
> case ${nvme_trtype} in
> loop)
> _have_driver nvme-loop
> @@ -94,6 +95,20 @@ _require_test_dev_is_nvme() {
> return 0
> }
>
> +_require_nvme_test_img_size() {
> + local require_sz_mb
> + local nvme_img_size_mb
> +
> + require_sz_mb="$(convert_to_mb "$1")"
> + nvme_img_size_mb="$(convert_to_mb "${nvme_img_size}")"
> +
> + if (( "${nvme_img_size_mb}" < "$require_sz_mb" )); then

FYI, in bash arithmetic operation (( )), we don't need to add "${}" for
variables. Code below should work.

if ((nvme_img_size_mb < require_sz_mb)); then

> + SKIP_REASONS+=("nvme_img_size must be at least ${require_sz_mb}m")
> + return 1
> + fi
> + return 0
> +}
> +
> _require_nvme_trtype() {
> local trtype
> for trtype in "$@"; do
> --
> 2.40.0
>