syscalls/fallocate04: add 'FALLOC_FL_INSERT_RANGE' test-case
PATCH 1/1 syscalls/fallocate04: add 'FALLOC_FL_INSERT_RANGE' test-case
Check that it can insert space in the middle of the file. Verify new size and file's content. The flag is available since Linux 4.1. Supported FS: XFS(4.1+) & ext4(4.2+).
Also fix test04() if number of blocks more than 3.
--- testcases/kernel/syscalls/fallocate/fallocate.h | 4 ++ testcases/kernel/syscalls/fallocate/fallocate04.c | 50 ++++++++++++++++++++- 2 files changed, 52 insertions(+), 2 deletions(-)
testcases/kernel/syscalls/fallocate/fallocate.h +4 -0
@@ -47,6 +47,10 @@#define FALLOC_FL_ZERO_RANGE 0x10#endif +#ifndef FALLOC_FL_INSERT_RANGE +#define FALLOC_FL_INSERT_RANGE 0x20 +#endif +#if !defined(HAVE_FALLOCATE )static inline long fallocate (int fd,int mode,loff_t offset,loff_t len) {
testcases/kernel/syscalls/fallocate/fallocate04.c +48 -2
74 lines not on this page · raw message
Signature · 1 line
1.7.1
PATCH 1/1 syscalls/fallocate04: add 'FALLOC_FL_INSERT_RANGE' test-case
Hi!
testcases/kernel/syscalls/fallocate/fallocate04.c static void test04(void) · line 270
Quoted 6 lines
testcases/kernel/syscalls/fallocate/fallocate04.c +2
-1fill_tst_buf (tmp_buf);memcpy (exp_buf, tmp_buf, block_size); -memcpy (exp_buf + block_size, tmp_buf + size, block_size); +memcpy (exp_buf + block_size, tmp_buf +2 * block_size, + buf_size - block_size *2 );
Looks OK to me.
Quoted 36 lines
testcases/kernel/syscalls/fallocate/fallocate04.c +30
-0exp_buf[block_size -1 ] = exp_buf[block_size] ='\0' ;check_file_data (exp_buf, size);@@ -274,6 +275,50 @@ static void test04(void)tst_resm (TPASS ,"test-case succeeded" ); } +static void test05 (void ) +{ +tst_resm (TINFO ,"inserting space with FALLOC_FL_INSERT_RANGE" ); + +size_t alloc_size0 =get_allocsize (); + +tst_resm (TINFO ,"read current allocated file size '%zu'" , alloc_size0); + +if (fallocate (fd,FALLOC_FL_INSERT_RANGE , block_size, + block_size) ==-1 ) { +if (errno ==EOPNOTSUPP ) { +tst_brkm (TCONF , cleanup, +"FALLOC_FL_INSERT_RANGE not supported" ); + } +tst_brkm (TFAIL |TERRNO , cleanup,"fallocate failed" ); + } + +/* allocate space and ensure that it filled with zeroes */ +if (fallocate (fd,FALLOC_FL_ZERO_RANGE , block_size, block_size) ==-1 ) +tst_brkm (TFAIL |TERRNO , cleanup,"fallocate failed" ); + +size_t alloc_size1 =get_allocsize (); + +tst_resm (TINFO ,"allocated file size before '%zu' and after '%zu'" , + alloc_size0, alloc_size1); +if ((alloc_size0 + block_size) != alloc_size1) +tst_brkm (TFAIL , cleanup,"not expected allocated size" ); + +size_t size = buf_size; +char tmp_buf[buf_size];
testcases/kernel/syscalls/fallocate/fallocate04.c static void test04(void) · line 317
Quoted 10 lines
testcases/kernel/syscalls/fallocate/fallocate04.c +10
-0+char exp_buf[size]; + +fill_tst_buf (tmp_buf); + +memcpy (exp_buf, tmp_buf, block_size); +memcpy (exp_buf +2 * block_size, tmp_buf +2 * block_size, + buf_size - block_size *2 ); +memset (exp_buf + block_size -1 ,0 , block_size +2 ); + +check_file_data (exp_buf, size);
Why not just:
fill_tst_buf(exp_buf); memset(exp_buf + block_size - 1, 0, block_size + 2);
Otherwise it looks fine.
Signature · 2 lines
Cyril Hrubis [email protected]
PATCH 1/1 syscalls/fallocate04: add 'FALLOC_FL_INSERT_RANGE' test-case
Hi,
Quoted 16 lines · Cyril Hrubis
...
testcases/kernel/syscalls/fallocate/fallocate04.c +13
-0+ +size_t size = buf_size; +char tmp_buf[buf_size]; +char exp_buf[size]; + +fill_tst_buf (tmp_buf); + +memcpy (exp_buf, tmp_buf, block_size); +memcpy (exp_buf +2 * block_size, tmp_buf +2 * block_size, + buf_size - block_size *2 ); +memset (exp_buf + block_size -1 ,0 , block_size +2 ); + +check_file_data (exp_buf, size);Why not just:
Quoted 2 lines
fill_tst_buf(exp_buf); memset(exp_buf + block_size - 1, 0, block_size + 2);
Correct, we returned to the state that was after test-case 3.
Thanks,
Alexey
PATCH 1/1 syscalls/fallocate04: add 'FALLOC_FL_INSERT_RANGE' test-case
Hi,
Applied corrected version.
Thanks,
Alexey