diff options
author | Yang Xu <xuyang2018.jy@cn.fujitsu.com> | 2020-05-12 13:11:10 +0800 |
---|---|---|
committer | Cyril Hrubis <chrubis@suse.cz> | 2020-05-12 11:57:14 +0200 |
commit | 0fafcb398e556d882e548b8da2cdafe508ce20e0 (patch) | |
tree | df918ff331e8e2e7be639bd797638b7aa6e62850 /testcases | |
parent | baef9fa2cd116529d65c2a90b1281e90d7789b33 (diff) |
syscalls/ioctl_loop05: Ensure do zero offset when using -i parameter
Currently, we use return instead of zero_offset. I debug this code
(early return, ext4 filesystem)as below:
---------------------------------------
TEST(ioctl(dev_fd, LOOP_SET_DIRECT_IO, 1));
if (TST_RET == 0) {
tst_res(TPASS, "LOOP_SET_DIRECT_IO succeeded unexpectedly");
SAFE_IOCTL(dev_fd, LOOP_SET_DIRECT_IO, 0);
}
return;
---------------------------------------
this case will be broke when using i parameter,
ioctl_loop05.c:62: BROK: ioctl(3,LOOP_SET_DIRECT_IO,...) failed: EINVAL (22)
It seems the last test affected this test, so I move zero status to the
beginning of the test to avoid unknown error.
Signed-off-by: Yang Xu <xuyang2018.jy@cn.fujitsu.com>
Reviewed-by: Cyril Hrubis <chrubis@suse.cz>
Diffstat (limited to 'testcases')
-rw-r--r-- | testcases/kernel/syscalls/ioctl/ioctl_loop05.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/testcases/kernel/syscalls/ioctl/ioctl_loop05.c b/testcases/kernel/syscalls/ioctl/ioctl_loop05.c index 6cf701f47..6c9ea2802 100644 --- a/testcases/kernel/syscalls/ioctl/ioctl_loop05.c +++ b/testcases/kernel/syscalls/ioctl/ioctl_loop05.c @@ -5,7 +5,7 @@ * * This is a basic ioctl test about loopdevice. * - * It is designed to test LOOP_SET_DIRECT_IO can updata a live + * It is designed to test LOOP_SET_DIRECT_IO can update a live * loop device dio mode. It needs the backing file also supports * dio mode and the lo_offset is aligned with the logical block size. * @@ -57,6 +57,7 @@ static void verify_ioctl_loop(void) struct loop_info loopinfo; memset(&loopinfo, 0, sizeof(loopinfo)); + TST_RETRY_FUNC(ioctl(dev_fd, LOOP_SET_STATUS, &loopinfo), TST_RETVAL_EQ0); tst_res(TINFO, "Without setting lo_offset or sizelimit"); SAFE_IOCTL(dev_fd, LOOP_SET_DIRECT_IO, 1); @@ -91,9 +92,6 @@ static void verify_ioctl_loop(void) tst_res(TPASS | TTERRNO, "LOOP_SET_DIRECT_IO failed as expected"); else tst_res(TFAIL | TTERRNO, "LOOP_SET_DIRECT_IO failed expected EINVAL got"); - - loopinfo.lo_offset = 0; - TST_RETRY_FUNC(ioctl(dev_fd, LOOP_SET_STATUS, &loopinfo), TST_RETVAL_EQ0); } static void setup(void) |