<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Mar 28, 2019 at 12:57 PM Sumit Garg <<a href="mailto:sumit.garg@linaro.org">sumit.garg@linaro.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Wed, 27 Mar 2019 at 20:18, Cyril Hrubis <<a href="mailto:chrubis@suse.cz" target="_blank">chrubis@suse.cz</a>> wrote:<br>
><br>
> Hi!<br>
> Sorry for the long delay.<br>
><br>
> This is altmost perfect, the only problem is that the third test fails<br>
> on vfat. As far as I can tell the reason is that vfat does not support<br>
> sparse files, hence seeking to the middle of file and writing there also<br>
> schedulles I/O to write zeros from the start of the file to the offset<br>
> we started writing to.<br>
><br>
<br>
Hmm, I see.<br>
<br>
> Following ugly patch solves the problem:<br>
><br>
> diff --git a/testcases/kernel/syscalls/sync_file_range/sync_file_range02.c b/testcases/kernel/syscalls/sync_file_range/sync_file_range02.c<br>
> index 334ea5e88..774524c2f 100644<br>
> --- a/testcases/kernel/syscalls/sync_file_range/sync_file_range02.c<br>
> +++ b/testcases/kernel/syscalls/sync_file_range/sync_file_range02.c<br>
> @@ -45,6 +45,12 @@ static void verify_sync_file_range(struct testcase *tc)<br>
><br>
>         fd = SAFE_OPEN(tc->fname, O_RDWR|O_CREAT, MODE);<br>
><br>
> +       if (!strcmp(tst_device->fs_type, "vfat")) {<br>
> +               tst_res(TINFO, "Pre-filling file");<br>
> +               tst_fill_fd(fd, 0, tc->write_off, 1);<br>
> +               fsync(fd);<br>
> +       }<br>
> +<br>
>         lseek(fd, tc->write_off, SEEK_SET);<br>
><br>
><br>
> So either we limit the tests so that the sync region does not overlap with the<br>
> possible hole at the start of the file and loose some test coverage.<br>
><br>
> Or we can add a function to the test library that would return true/false if<br>
> sparse files are supported for a given FS.<br>
><br>
<br>
My initial thought behind this test-case was to run sync over a range<br>
which is partially written. The other partial region not being written<br>
could either be a hole or already synced data. So pre-fill file in<br>
case of vfat looks sane option, but how about if we add pre-fill as<br>
part of setup? Something like:<br></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small">I think this is a bit better. Could u send a new patch version?</div></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
--- a/testcases/kernel/syscalls/sync_file_range/sync_file_range02.c<br>
+++ b/testcases/kernel/syscalls/sync_file_range/sync_file_range02.c<br>
@@ -86,6 +86,12 @@ static void setup(void)<br>
 {<br>
        if (!check_sync_file_range())<br>
                tst_brk(TCONF, "sync_file_range() not supported");<br>
+<br>
+       if (!strcmp(tst_device->fs_type, "vfat")) {<br>
+               tst_res(TINFO, "Pre-filling file");<br>
+               tst_fill_file(FNAME3, 0, TST_MB, FILE_SZ_MB);<br>
+               sync();<br>
+       }<br>
 }<br>
<br>
-Sumit<br>
<br>
> --<br>
> Cyril Hrubis<br>
> <a href="mailto:chrubis@suse.cz" target="_blank">chrubis@suse.cz</a><br>
<br>
-- <br>
Mailing list info: <a href="https://lists.linux.it/listinfo/ltp" rel="noreferrer" target="_blank">https://lists.linux.it/listinfo/ltp</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div>Regards,<br></div><div>Li Wang<br></div></div></div></div>