<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 Wed, Apr 3, 2019 at 7:17 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">Hi Li,<br>
<br>
Firstly apologies for the late reply due to travelling for Linaro Connect BKK19.<br>
<br>
On Mon, 1 Apr 2019 at 13:54, Li Wang <<a href="mailto:liwang@redhat.com" target="_blank">liwang@redhat.com</a>> wrote:<br>
><br>
> Hi Sumit,<br>
><br>
> On Thu, Mar 7, 2019 at 8:44 PM Sumit Garg <<a href="mailto:sumit.garg@linaro.org" target="_blank">sumit.garg@linaro.org</a>> wrote:<br>
>><br>
>> Add partial file sync tests as part of sync_file_range02 test-case.<br>
>><br>
>> Signed-off-by: Sumit Garg <<a href="mailto:sumit.garg@linaro.org" target="_blank">sumit.garg@linaro.org</a>><br>
>> ---<br>
>><br>
>> Changes in v3:<br>
>> 1. Add upper bound check for synced size to device.<br>
>> 2. Refactor tests for more code reuse.<br>
>> 3. Add another test to check sync over partial write.<br>
>><br>
>> Changes in v2:<br>
>> 1. Do full file write instead of partial and test sync partial file.<br>
>><br>
>>  .../syscalls/sync_file_range/sync_file_range02.c   | 47 +++++++++++++++++-----<br>
>>  1 file changed, 37 insertions(+), 10 deletions(-)<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 82d77f7..334ea5e 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>
>> @@ -22,23 +22,36 @@<br>
>>  #include "check_sync_file_range.h"<br>
>><br>
>>  #define MNTPOINT               "mnt_point"<br>
>> -#define FNAME          MNTPOINT"/test"<br>
>> -#define FILE_SIZE_MB   32<br>
>> -#define FILE_SIZE (FILE_SIZE_MB * TST_MB)<br>
>> +#define FNAME1                 MNTPOINT"/test1"<br>
>> +#define FNAME2                 MNTPOINT"/test2"<br>
>> +#define FNAME3                 MNTPOINT"/test3"<br>
>> +#define FILE_SZ_MB             32<br>
>> +#define FILE_SZ                        (FILE_SZ_MB * TST_MB)<br>
>>  #define MODE                   0644<br>
>><br>
>> -static void verify_sync_file_range(void)<br>
>> +struct testcase {<br>
>> +       char *fname;<br>
>> +       off64_t sync_off;<br>
>> +       off64_t sync_size;<br>
>> +       size_t exp_sync_size;<br>
>> +       off64_t write_off;<br>
>> +       size_t write_size_mb;<br>
>> +};<br>
>> +<br>
>> +static void verify_sync_file_range(struct testcase *tc)<br>
>>  {<br>
>>         int fd;<br>
>>         unsigned long written;<br>
>><br>
>> -       fd = SAFE_OPEN(FNAME, O_RDWR|O_CREAT, MODE);<br>
>> +       fd = SAFE_OPEN(tc->fname, O_RDWR|O_CREAT, MODE);<br>
>> +<br>
>> +       lseek(fd, tc->write_off, SEEK_SET);<br>
>><br>
>>         tst_dev_bytes_written(tst_device->dev);<br>
>><br>
>> -       tst_fill_fd(fd, 0, TST_MB, FILE_SIZE_MB);<br>
>> +       tst_fill_fd(fd, 0, TST_MB, tc->write_size_mb);<br>
><br>
><br>
> I'm just thinking that is probably more precise if we reverse the order of tst_fill_fd() and tst_dev_bytes_written()? Because that does counting the dev_bytes_writen only before and after sync_file_range(), we cann't garantee system does not wirte back to deviece when do fill_fd(), isn't it?<br>
<br>
There is another aspect to this if we move tst_dev_bytes_written()<br>
after tst_fill_fd() then we may miss count for actual data that may be<br>
written back during tst_fill_fd() operation.<br>
<br></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small">Sounds reasonable, thanks for the clarification.</div></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
AFAIU, LTP uses test-device for all device specific tests of which it<br>
has full control and also the tests run sequentially. So I think there<br>
are pretty rare chances to have such scenario that you referred too.<br>
<br>
-Sumit<br></blockquote><div> </div></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div>Regards,<br></div><div>Li Wang<br></div></div></div></div>