Re: [PATCH] swap 13/13 may_enter_fs?

From: Andrew Morton (akpm@digeo.com)
Date: Tue Mar 25 2003 - 20:12:23 EST


Hugh Dickins <hugh@veritas.com> wrote:
>
> shrink_list's may_enter_fs (may_write_page would be a better name)
> currently reflects that swapcache page I/O won't suffer from FS
> complications, so can be done if __GFP_IO without __GFP_FS; but
> the same is true of a tmpfs page (which is just this stage away
> from being a swapcache page), so check bdi->memory_backed instead.
>
> ...
>
> + if (!(gfp_mask & (bdi->memory_backed?
> + __GFP_IO: __GFP_FS)))
> goto keep_locked;

Barf. I haven't used a question mark operator in ten years, and this is a
fine demonstration of why ;)

I think a feasibly comprehensible transformation would be:

        /*
         * A comment goes here
         */
        if (bdi->memory_backed)
                may_enter_fs = gfp_mask & __GFP_IO;
        else
                may_enter_fs = gfp_mask & __GFP_FS;

That being said, this is a bit presumptuous. PF_MEMALLOC will protect us
from infinite recursion but there are other reasons for GFP_NOFS.

For example, a memory-backed filesystem may be trying to allocate GFP_NOFS
memory while holding filesystem locks which are taken by its writepage.

How about adding a new field to backing_dev_info for this case? Damned if I
can think of a name for it though.

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



This archive was generated by hypermail 2b29 : Mon Mar 31 2003 - 22:00:21 EST