syscalls/statx01: Update the stx_blocks check
diff mbox series

Message ID 20180904140507.30225-1-chrubis@suse.cz
State Accepted
Headers show
Series
  • syscalls/statx01: Update the stx_blocks check
Related show

Commit Message

Cyril Hrubis Sept. 4, 2018, 2:05 p.m. UTC
After talking with Jan Kara we decided that the previous check wasn't
100% right.

* In some cases the data for small files can be stored along with the
  file metadata and in such case the number of allocated blocks would be
  zero.

* I've been assured that the filesystem blocks size is <= than the
  optimal transfer block size and while the definition for stx_blksize
  is quite vague it should be good enough for the test.

  Note that we also rely on the fact that we write 256 bytes to the
  file, which is smaller than any known block size, so at most one block
  would be allocated.

Signed-off-by: Cyril Hrubis <chrubis@suse.cz>
CC: Jan Kara <jack@suse.cz>
---
 testcases/kernel/syscalls/statx/statx01.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jan Kara Sept. 4, 2018, 2:21 p.m. UTC | #1
On Tue 04-09-18 16:05:07, Cyril Hrubis wrote:
> After talking with Jan Kara we decided that the previous check wasn't
> 100% right.
> 
> * In some cases the data for small files can be stored along with the
>   file metadata and in such case the number of allocated blocks would be
>   zero.
> 
> * I've been assured that the filesystem blocks size is <= than the
>   optimal transfer block size and while the definition for stx_blksize
>   is quite vague it should be good enough for the test.
> 
>   Note that we also rely on the fact that we write 256 bytes to the
>   file, which is smaller than any known block size, so at most one block
>   would be allocated.

This is not 100% correct as filesystem is in principle free to allocate
arbitrary amount of metadata for the file and account it in stx_blocks.
Just no sane filesystem does it... So I think the test is worth a try. We
can always relax it if it proves to be too big hassle.
 
> Signed-off-by: Cyril Hrubis <chrubis@suse.cz>
> CC: Jan Kara <jack@suse.cz>

You can add:

Acked-by: Jan Kara <jack@suse.cz>

								Honza

> ---
>  testcases/kernel/syscalls/statx/statx01.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/testcases/kernel/syscalls/statx/statx01.c b/testcases/kernel/syscalls/statx/statx01.c
> index 806cea636..574560b5d 100644
> --- a/testcases/kernel/syscalls/statx/statx01.c
> +++ b/testcases/kernel/syscalls/statx/statx01.c
> @@ -90,7 +90,7 @@ static void test_normal_file(void)
>  			buff.stx_mode, MODE);
>  
>  
> -	if (buff.stx_blocks > 0 && buff.stx_blocks <= 128)
> +	if (buff.stx_blocks <= buff.stx_blksize/512)
>  		tst_res(TPASS, "stx_blocks(%"PRIu64") is valid",
>  			buff.stx_blocks);
>  	else
> -- 
> 2.16.4
>
Cyril Hrubis Sept. 4, 2018, 3:01 p.m. UTC | #2
Hi!
> Acked-by: Jan Kara <jack@suse.cz>

Added and pushed, thanks.

Patch
diff mbox series

diff --git a/testcases/kernel/syscalls/statx/statx01.c b/testcases/kernel/syscalls/statx/statx01.c
index 806cea636..574560b5d 100644
--- a/testcases/kernel/syscalls/statx/statx01.c
+++ b/testcases/kernel/syscalls/statx/statx01.c
@@ -90,7 +90,7 @@  static void test_normal_file(void)
 			buff.stx_mode, MODE);
 
 
-	if (buff.stx_blocks > 0 && buff.stx_blocks <= 128)
+	if (buff.stx_blocks <= buff.stx_blksize/512)
 		tst_res(TPASS, "stx_blocks(%"PRIu64") is valid",
 			buff.stx_blocks);
 	else