[LTP] [PATCH v2] syscalls: add syscall syncfs test

Cyril Hrubis
2019-02-15T13:03:51Z

Hi!
> > +
> > + fd = SAFE_OPEN(TST_FILE, O_RDWR|O_CREAT, MODE);
> > +
> > + /* Filling the test file */
> > + for (counter = 0; counter < TST_FILE_SIZE_MB; counter++)
> > + SAFE_WRITE(1, fd, buffer, SIZE_MB);
> > +
> > + TEST(syncfs(fd));
> > + if (TST_RET != 0)
> > + tst_brk(TFAIL | TTERRNO, "syncfs(fd) failed");
> > +
> > + SAFE_FILE_SCANF(dev_stat_path, "%*s %*s %*s %*s %*s %*s %s",
> > + nwrite_sec_val);
> > +
> > + write_sec = SAFE_STRTOUL(nwrite_sec_val, 0, ULONG_MAX);
> > +
> > + if ((write_sec - prev_write_sec) * 512 >=
> > + (TST_FILE_SIZE_MB * SIZE_MB))
> > + tst_res(TPASS, "Test filesystem synced to device");
> > + else
> > + tst_res(TFAIL, "Failed to sync test filesystem to device");
> > +
> > + SAFE_CLOSE(fd);
> > +}
> > +
>
> It's good to have a tests that verified syncfs() actually does what it
> is meant to do.
> It's awkward that none of the tests for fsync() fdatasync() sync()
> sync_file_range()
> check that.
>
> It would be very low hanging to have the exact same test that you wrote
> iterate on several test cases where the only difference is the op called on
> fd. (fsync,fdatasync,syncfs) should all have the same consequence wrt
> minimal written sectors.
> With a little more effort, sync() and sync_file_range() could also be
> added to test cases.
>
> I realize that LTP usually puts syscalls tests under the specific
> kernel/syscalls directory, but in this case, I believe code reuse calls
> for a single test that exercises all three syscalls.

We can always put the common code into a header/library and still have a
test for each of the syscalls as we usually do in LTP.

--
Cyril Hrubis
chrubis@suse.cz