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