Re: [PATCH v2 6/8] zbd: Check for direct flag only if its block device

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On May 26, 2022 / 20:18, Ankit Kumar wrote:
> nvme-ns generic character devices currently do not support O_DIRECT flag.
> Check for fio option for direct flag only if filetype is a block device.
> 
> t/zbd skip test case #1 for character devices as don't require
> direct I/O.
> 
> Signed-off-by: Ankit Kumar <ankit.kumar@xxxxxxxxxxx>
> ---
>  t/zbd/test-zbd-support | 3 ++-
>  zbd.c                  | 4 ++--
>  2 files changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/t/zbd/test-zbd-support b/t/zbd/test-zbd-support
> index 7e2fff00..a1ec5684 100755
> --- a/t/zbd/test-zbd-support
> +++ b/t/zbd/test-zbd-support
> @@ -251,8 +251,9 @@ require_conv_zones() {
>  	return 0
>  }
>  
> -# Check whether buffered writes are refused.
> +# Check whether buffered writes are refused for regular block devices.
>  test1() {
> +    require_regular_block_dev || return $SKIP_TESTCASE

Hmm, this change skips this test case for character devices, but it also skips
for zoned block devices. Not good. This test case should not be skipped for
block devices for both zoned and non-zoned. The word "regular" in the the helper
function require_regular_block_dev() means "non-zoned". So it ensures that the
test target device is a *non-zoned* block device.

To skip this test case for character devices and run for block devices, a new
helper function require_block_dev() will be needed.

>      run_fio --name=job1 --filename="$dev" --rw=write --direct=0 --bs=4K	\
>  	    "$(ioengine "psync")" --size="${zone_size}" --thread=1	\
>  	    --zonemode=zbd --zonesize="${zone_size}" 2>&1 |
> diff --git a/zbd.c b/zbd.c
> index b1fd6b4b..627fb968 100644
> --- a/zbd.c
> +++ b/zbd.c
> @@ -466,7 +466,7 @@ out:
>  	return res;
>  }
>  
> -/* Verify whether direct I/O is used for all host-managed zoned drives. */
> +/* Verify whether direct I/O is used for all host-managed zoned block drives. */
>  static bool zbd_using_direct_io(void)
>  {
>  	struct thread_data *td;
> @@ -477,7 +477,7 @@ static bool zbd_using_direct_io(void)
>  		if (td->o.odirect || !(td->o.td_ddir & TD_DDIR_WRITE))
>  			continue;
>  		for_each_file(td, f, j) {
> -			if (f->zbd_info &&
> +			if (f->zbd_info && f->filetype == FIO_TYPE_BLOCK &&
>  			    f->zbd_info->model == ZBD_HOST_MANAGED)
>  				return false;
>  		}
> -- 
> 2.17.1
> 

-- 
Shin'ichiro Kawasaki



[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux