Steven Pratt wrote:
>
> >+static int make_ahead_window(struct address_space *mapping, struct file 
> >*filp,
> >+            struct file_ra_state *ra, int force)
> >+{
> >+    int block, ret;
> >+
> >+    block = force || (ra->prev_page >= ra->ahead_start);
> >+    ret = blockable_page_cache_readahead(mapping, filp,
> >+                    ra->ahead_start, ra->ahead_size, ra, block);
> >+
> >+    if (!ret && !force) {
> >
> This really needs to be
>
>     if (!ret && !block) {
>

Current code:

        block = offset + newsize-1 >= ra->ahead_start;
        if (!blockable_page_cache_readahead(..., block) {
                ra->ahead_start = 0;
                ra->ahead_size = 0;
        }

Patched code:
        make_ahead_window(..., 0); // force == 0

So i think the patch is correct.

> otherwise we can have an aheadwindow which was never populated which
> will cause slow reads which we want to avoid in all cases.

may be, but this patch tries not to change the current behavior.

Oleg.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to