On 12/16/25 08:50, Jaegeuk Kim wrote:
> On 12/15, Chao Yu wrote:
>> On 12/12/25 08:55, Jaegeuk Kim via Linux-f2fs-devel wrote:
>>> Signed-off-by: Jaegeuk Kim <[email protected]>
>>> ---
>>>  tools/f2fs_io/f2fs_io.c | 16 ++++++++++++++++
>>>  1 file changed, 16 insertions(+)
>>>
>>> diff --git a/tools/f2fs_io/f2fs_io.c b/tools/f2fs_io/f2fs_io.c
>>> index 4429e0b0459c..08f3c9b79cdf 100644
>>> --- a/tools/f2fs_io/f2fs_io.c
>>> +++ b/tools/f2fs_io/f2fs_io.c
>>> @@ -938,6 +938,7 @@ static void do_write_advice(int argc, char **argv, 
>>> const struct cmd_desc *cmd)
>>>  "  dontcache: buffered IO + dontcache\n"           \
>>>  "  dio      : direct IO\n"                         \
>>>  "  mmap     : mmap IO\n"                           \
>>> +"  mlock    : mmap + mlock\n"                              \
>>>  "  madvise  : mmap + mlock2 + madvise\n"           \
>>>  "  fadvise  : mmap + fadvise + mlock\n"                    \
>>>  "advice can be\n"                                  \
>>> @@ -956,6 +957,7 @@ static void do_read(int argc, char **argv, const struct 
>>> cmd_desc *cmd)
>>>     u64 mlock_time_start = 0, mlock_time_end = 0;
>>>     int flags = 0;
>>>     int do_mmap = 0;
>>> +   int do_mlock = 0;
>>>     int do_fadvise = 0;
>>>     int do_madvise = 0;
>>>     int do_dontcache = 0;
>>> @@ -981,6 +983,8 @@ static void do_read(int argc, char **argv, const struct 
>>> cmd_desc *cmd)
>>>             flags |= O_DIRECT;
>>>     else if (!strcmp(argv[4], "mmap"))
>>>             do_mmap = 1;
>>> +   else if (!strcmp(argv[4], "mlock"))
>>> +           do_mlock = 1;
>>>     else if (!strcmp(argv[4], "madvise"))
>>>             do_madvise = 1;
>>>     else if (!strcmp(argv[4], "fadvise"))
>>> @@ -1027,6 +1031,18 @@ static void do_read(int argc, char **argv, const 
>>> struct cmd_desc *cmd)
>>>             mlock_time_end = get_current_us();
>>>             read_cnt = count * buf_size;
>>>             memcpy(print_buf, data, print_bytes);
>>> +   } else if (do_mlock) {
>>> +           data = mmap(NULL, count * buf_size, PROT_READ,
>>> +                           MAP_SHARED, fd, offset);
>>> +           if (data == MAP_FAILED)
>>> +                   die("Mmap failed");
>>> +
>>> +           io_time_start = get_current_us();
>>
>> mlock_time_start = get_current_us();
> 
> This is when IO happens, so IO.

Okay, but it seems later we will print "mlock time = 0" which doesn't match the 
code?

Thanks,

> 
>>
>>> +           if (mlock(data, count * buf_size))
>>> +                   die_errno("mlock failed");
>>> +           io_time_end = get_current_us();
>>
>> mlock_time_end = get_current_us();
>>
>> Thanks,
>>
>>> +           read_cnt = count * buf_size;
>>> +           memcpy(print_buf, data, print_bytes);
>>>     } else if (do_madvise) {
>>>             data = mmap(NULL, count * buf_size, PROT_READ,
>>>                             MAP_SHARED, fd, offset);



_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to