[LTP] [v2] readahead02: fix read_ahead_kb file not found

Jan Stancek
2016-09-06T14:22:00Z

> From: "Naresh Kamboju" <naresh.kamboju@linaro.org>
> To: "Jan Stancek" <jstancek@redhat.com>
> Cc: "chrubis" <chrubis@suse.cz>, ltp@lists.linux.it, akpm@linux-foundation.org, "fengguang wu"
> <fengguang.wu@intel.com>, "graeme gregory" <graeme.gregory@linaro.org>, "milosz wasilewski"
> <milosz.wasilewski@linaro.org>
> Sent: Tuesday, 6 September, 2016 2:33:58 PM
> Subject: Re: [LTP] [v2] readahead02: fix read_ahead_kb file not found
>
> Hi Jan,
>
> On 5 September 2016 at 13:06, Jan Stancek <jstancek@redhat.com> wrote:
> >
> >
> > ----- Original Message -----
> >> From: "naresh kamboju" <naresh.kamboju@linaro.org>
> >> To: chrubis@suse.cz, ltp@lists.linux.it
> >> Cc: akpm@linux-foundation.org, "fengguang wu" <fengguang.wu@intel.com>,
> >> "graeme gregory" <graeme.gregory@linaro.org>,
> >> "milosz wasilewski" <milosz.wasilewski@linaro.org>
> >> Sent: Friday, 2 September, 2016 12:42:33 PM
> >> Subject: [LTP] [v2] readahead02: fix read_ahead_kb file not found
> >>
> >> From: Naresh Kamboju <naresh.kamboju@linaro.org>
> >>
> >> Test case is looking for read_ahead_kb file on a partition device (8:2)
> >> and
> >> not on block device (8:0/8:16/8:32/8:48). The appropriate block device
> >> that
> >> holds the partition can be found at queue/read_ahead_kb entry.
> >>
> >> Before patch readahead02 test broken,
> >> readahead02 1 TBROK : safe_file_ops.c:144: Failed to open FILE
> >> '/sys/dev/block/8:2/queue/read_ahead_kb' for reading at
> >> readahead02.c:197: errno=ENOENT(2): No such file or directory
> >>
> >> After applying patch,
> >> readahead02 0 TINFO : creating test file of size: 67108864
> >> readahead02 0 TINFO : max readahead size is: 131072
> >> readahead02 0 TINFO : read_testfile(0)
> >> readahead02 0 TINFO : max readahead size is: 131072
> >> readahead02 0 TINFO : read_testfile(1)
> >> readahead02 0 TINFO : max readahead size is: 131072
> >> readahead02 1 TPASS : expected ret success - returned value = 0
> >> readahead02 2 TPASS : offset is still at 0 as expected
> >> readahead02 0 TINFO : read_testfile(0) took: 1437202 usec
> >> readahead02 0 TINFO : read_testfile(1) took: 1361915 usec
> >> readahead02 0 TINFO : read_testfile(0) read: 67108864 bytes
> >> readahead02 0 TINFO : read_testfile(1) read: 0 bytes
> >> readahead02 3 TPASS : readahead saved some I/O
> >> readahead02 0 TINFO : cache can hold at least: 157404 kB
> >> readahead02 0 TINFO : read_testfile(0) used cache: 65332 kB
> >> readahead02 0 TINFO : read_testfile(1) used cache: 65636 kB
> >> readahead02 4 TPASS : using cache as expected
> >
> > This doesn't seem to be true for all entries under /sys/dev/block.
> > If I ran your patch on lvm, testcase fails:
>
> Thanks for your findings.
> I have tested on Ubuntu and Debian.
>
> We have to refactor this test case to work on multi distribution.
> I have to find a machine running CentOS and debug this case.

I think it should be enough to setup LVM volume, and point
LTP's TMPDIR to it to reproduce.

>
> >
> > # ./readahead02
> > readahead02 0 TINFO : creating test file of size: 67108864
> > readahead02 1 TBROK : safe_file_ops.c:144: Failed to open FILE
> > '/sys/dev/block/253:1/../queue/read_ahead_kb' for reading at
> > readahead02.c:202: errno=ENOENT(2): No such file or directory
> > readahead02 2 TBROK : safe_file_ops.c:144: Remaining cases broken
> >
> > # ll /sys/dev/block/253:1
> > lrwxrwxrwx. 1 root root 0 Sep 5 09:21 /sys/dev/block/253:1 ->
> > ../../devices/virtual/block/dm-1
> >
> > # ll /sys/dev/block/253:1/
> > total 0
> > -r--r--r--. 1 root root 4096 Sep 5 09:25 alignment_offset
> > -rw-r--r--. 1 root root 4096 Sep 5 09:25 badblocks
> > lrwxrwxrwx. 1 root root 0 Sep 5 09:21 bdi -> ../../bdi/253:1
> > -r--r--r--. 1 root root 4096 Sep 5 09:25 capability
> > -r--r--r--. 1 root root 4096 Sep 5 09:25 dev
> > -r--r--r--. 1 root root 4096 Sep 5 09:25 discard_alignment
> > drwxr-xr-x. 2 root root 0 Sep 5 09:25 dm
> > -r--r--r--. 1 root root 4096 Sep 5 09:25 ext_range
> > drwxr-xr-x. 2 root root 0 Sep 5 09:25 holders
> > -r--r--r--. 1 root root 4096 Sep 5 09:25 inflight
> > drwxr-xr-x. 2 root root 0 Sep 5 09:25 integrity
> > drwxr-xr-x. 2 root root 0 Sep 5 09:25 power
> > drwxr-xr-x. 2 root root 0 Sep 5 09:25 queue
>
> read_ahead_kb file should present in queue folder.
> Is this test case pass on this machine *without* my patch ?

Yes, it does pass without the patch. Since there doesn't seem to
be a reliable pattern depending on value of $min number, I'm
thinking we should try both and take first present:
/sys/dev/block/$maj:$min/queue/read_ahead_kb
/sys/dev/block/$maj:$min/../queue/read_ahead_kb

> /sys/dev/block/253:1/queue/read_ahead_kb
>
>
> > -r--r--r--. 1 root root 4096 Sep 5 09:25 range
> > -r--r--r--. 1 root root 4096 Sep 5 09:25 removable
> > -r--r--r--. 1 root root 4096 Sep 5 09:25 ro
> > -r--r--r--. 1 root root 4096 Sep 5 09:25 size
> > drwxr-xr-x. 2 root root 0 Sep 5 09:25 slaves
> > -r--r--r--. 1 root root 4096 Sep 5 09:25 stat
> > lrwxrwxrwx. 1 root root 0 Sep 5 09:21 subsystem ->
> > ../../../../class/block
> > drwxr-xr-x. 2 root root 0 Sep 5 09:25 trace
> > -rw-r--r--. 1 root root 4096 Sep 5 09:25 uevent
> >
> > # lsblk
> > NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
> > vda 252:0 0 35G 0 disk
> > ├─vda1 252:1 0 500M 0 part /boot
> > └─vda2 252:2 0 34.5G 0 part
> > ├─rhel_dhcp--27--118-swap 253:0 0 2G 0 lvm [SWAP]
> > └─rhel_dhcp--27--118-root 253:1 0 32.5G 0 lvm /
>
> Is it a physical drive or Virtual drive ?
> In general I use vda for KVM.

It's virtual, from host point of view it's a qcow2 file.

Regards,
Jan

>
> >
> > # uname -r
> > 4.7.0-rc7+
>
> Thank you.
>
> Best regards
> Naresh Kamboju
>
> >
> > Regards,
> > Jan
>