2005-02-24 18:37:25

by Oleg Nesterov

[permalink] [raw]
Subject: [PATCH 4/4][RESEND] readahead: cleanup blockable_page_cache_readahead()

I think that do_page_cache_readahead() can be inlined
in blockable_page_cache_readahead(), this makes the
code a bit more readable in my opinion.

Also makes check_ra_success() static inline.

Signed-off-by: Oleg Nesterov <[email protected]>

--- 2.6.11-rc5/mm/readahead.c~ 2005-01-29 15:51:04.000000000 +0300
+++ 2.6.11-rc5/mm/readahead.c 2005-01-29 16:37:05.000000000 +0300
@@ -348,8 +348,8 @@ int force_page_cache_readahead(struct ad
* readahead isn't helping.
*
*/
-int check_ra_success(struct file_ra_state *ra, unsigned long nr_to_read,
- unsigned long actual)
+static inline int check_ra_success(struct file_ra_state *ra,
+ unsigned long nr_to_read, unsigned long actual)
{
if (actual == 0) {
ra->cache_hit += nr_to_read;
@@ -394,15 +394,11 @@ blockable_page_cache_readahead(struct ad
{
int actual;

- if (block) {
- actual = __do_page_cache_readahead(mapping, filp,
- offset, nr_to_read);
- } else {
- actual = do_page_cache_readahead(mapping, filp,
- offset, nr_to_read);
- if (actual == -1)
- return 0;
- }
+ if (!block && bdi_read_congested(mapping->backing_dev_info))
+ return 0;
+
+ actual = __do_page_cache_readahead(mapping, filp, offset, nr_to_read);
+
return check_ra_success(ra, nr_to_read, actual);
}


2005-02-24 19:01:33

by Ram Pai

[permalink] [raw]
Subject: Re: [PATCH 4/4][RESEND] readahead: cleanup blockable_page_cache_readahead()

Andrew,
I have verified the patches against my standard benchmarks
and did not see any bad effects.

Also I have reviewd the patch and it looked clean and correct.

RP

On Thu, 2005-02-24 at 11:37, Oleg Nesterov wrote:
> I think that do_page_cache_readahead() can be inlined
> in blockable_page_cache_readahead(), this makes the
> code a bit more readable in my opinion.
>
> Also makes check_ra_success() static inline.
>
> Signed-off-by: Oleg Nesterov <[email protected]>
>
> --- 2.6.11-rc5/mm/readahead.c~ 2005-01-29 15:51:04.000000000 +0300
> +++ 2.6.11-rc5/mm/readahead.c 2005-01-29 16:37:05.000000000 +0300
> @@ -348,8 +348,8 @@ int force_page_cache_readahead(struct ad
> * readahead isn't helping.
> *
> */
> -int check_ra_success(struct file_ra_state *ra, unsigned long nr_to_read,
> - unsigned long actual)
> +static inline int check_ra_success(struct file_ra_state *ra,
> + unsigned long nr_to_read, unsigned long actual)
> {
> if (actual == 0) {
> ra->cache_hit += nr_to_read;
> @@ -394,15 +394,11 @@ blockable_page_cache_readahead(struct ad
> {
> int actual;
>
> - if (block) {
> - actual = __do_page_cache_readahead(mapping, filp,
> - offset, nr_to_read);
> - } else {
> - actual = do_page_cache_readahead(mapping, filp,
> - offset, nr_to_read);
> - if (actual == -1)
> - return 0;
> - }
> + if (!block && bdi_read_congested(mapping->backing_dev_info))
> + return 0;
> +
> + actual = __do_page_cache_readahead(mapping, filp, offset, nr_to_read);
> +
> return check_ra_success(ra, nr_to_read, actual);
> }

2005-02-24 22:30:31

by Steven Pratt

[permalink] [raw]
Subject: Re: [PATCH 4/4][RESEND] readahead: cleanup blockable_page_cache_readahead()

Ram wrote:

>Andrew,
> I have verified the patches against my standard benchmarks
> and did not see any bad effects.
>
> Also I have reviewd the patch and it looked clean and correct.
>
>RP
>
>

I have not had a chance to benchmark, but visual inspection looks good.

Steve

>On Thu, 2005-02-24 at 11:37, Oleg Nesterov wrote:
>
>
>>I think that do_page_cache_readahead() can be inlined
>>in blockable_page_cache_readahead(), this makes the
>>code a bit more readable in my opinion.
>>
>>Also makes check_ra_success() static inline.
>>
>>Signed-off-by: Oleg Nesterov <[email protected]>
>>
>>--- 2.6.11-rc5/mm/readahead.c~ 2005-01-29 15:51:04.000000000 +0300
>>+++ 2.6.11-rc5/mm/readahead.c 2005-01-29 16:37:05.000000000 +0300
>>@@ -348,8 +348,8 @@ int force_page_cache_readahead(struct ad
>> * readahead isn't helping.
>> *
>> */
>>-int check_ra_success(struct file_ra_state *ra, unsigned long nr_to_read,
>>- unsigned long actual)
>>+static inline int check_ra_success(struct file_ra_state *ra,
>>+ unsigned long nr_to_read, unsigned long actual)
>> {
>> if (actual == 0) {
>> ra->cache_hit += nr_to_read;
>>@@ -394,15 +394,11 @@ blockable_page_cache_readahead(struct ad
>> {
>> int actual;
>>
>>- if (block) {
>>- actual = __do_page_cache_readahead(mapping, filp,
>>- offset, nr_to_read);
>>- } else {
>>- actual = do_page_cache_readahead(mapping, filp,
>>- offset, nr_to_read);
>>- if (actual == -1)
>>- return 0;
>>- }
>>+ if (!block && bdi_read_congested(mapping->backing_dev_info))
>>+ return 0;
>>+
>>+ actual = __do_page_cache_readahead(mapping, filp, offset, nr_to_read);
>>+
>> return check_ra_success(ra, nr_to_read, actual);
>> }
>>
>>