From: Michel Lespinasse <walken@google.com>
To: Rik van Riel <riel@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
linux-mm@kvack.org, Ying Han <yinghan@google.com>,
linux-kernel@vger.kernel.org,
Andrew Morton <akpm@linux-foundation.org>,
Nick Piggin <npiggin@kernel.dk>,
Peter Zijlstra <peterz@infradead.org>
Subject: Re: [PATCH 2/3] Retry page fault when blocking on disk transfer.
Date: Fri, 8 Oct 2010 13:06:18 -0700 [thread overview]
Message-ID: <AANLkTinWxTT=+m_fAudc080OUMwacSefnMbSMBFZgPMH@mail.gmail.com> (raw)
In-Reply-To: <4CAF1B90.3080703@redhat.com>
On Fri, Oct 8, 2010 at 6:24 AM, Rik van Riel <riel@redhat.com> wrote:
>> +static inline int lock_page_or_retry(struct page *page, struct mm_struct
>> *mm,
>> + unsigned int flags)
>> +{
>> + if (trylock_page(page))
>> + return 1;
>> + if (!(flags& FAULT_FLAG_ALLOW_RETRY)) {
>> + __lock_page(page);
>> + return 1;
>> + }
>> +
>> + up_read(&mm->mmap_sem);
>> + wait_on_page_locked(page);
>> + return 0;
>> +}
>
> Wait a moment. Your other patch 2/3 also has a
> lock_page_or_retry function. That one is in
> filemap.c and takes slightly different arguments,
> to do essentially the same thing...
>
> +/*
> + * Lock the page, unless this would block and the caller indicated that it
> + * can handle a retry.
> + */
> +static int lock_page_or_retry(struct page *page,
> + struct vm_area_struct *vma, struct vm_fault
> *vmf)
> +{
>
> Is there a way the two functions can be merged
> into one?
Yes, this would be easy to do.
The argument against it would be loss of inlining and, in the filemap
version, the need to reference vma and vmf fields to find out the mm
and flags values. We'd like to avoid doing that at least in the fast
path when trylock_page succeeds - though, now that I think about it,
both could be avoided with an inline function in a header returning
trylock_page(page) || _lock_page_or_retry(mm, flags)
Hmmm, this is actually quite similar to how other functions in
pagemap.h / filemap.c are done...
I'll send an updated series using this suggestion.
--
Michel "Walken" Lespinasse
A program is never fully debugged until the last user dies.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2010-10-08 20:06 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-05 7:53 [PATCH 0/3] V2: Reduce mmap_sem hold times during file backed page faults Michel Lespinasse
2010-10-05 7:53 ` [PATCH 1/3] filemap_fault: unique path for locking page Michel Lespinasse
2010-10-05 17:07 ` Rik van Riel
2010-10-05 7:53 ` [PATCH 2/3] Retry page fault when blocking on disk transfer Michel Lespinasse
2010-10-05 17:33 ` Linus Torvalds
2010-10-05 17:38 ` Rik van Riel
2010-10-05 22:44 ` Michel Lespinasse
2010-10-08 4:39 ` Michel Lespinasse
2010-10-08 13:24 ` Rik van Riel
2010-10-08 20:06 ` Michel Lespinasse [this message]
2010-10-09 1:22 ` Michel Lespinasse
2010-10-11 22:25 ` Andrew Morton
2010-10-11 22:43 ` Michel Lespinasse
2010-10-13 23:17 ` Andrew Morton
2010-10-06 4:02 ` H. Peter Anvin
2010-10-05 7:53 ` [PATCH 3/3] access_error API cleanup Michel Lespinasse
2010-10-05 19:44 ` Rik van Riel
2010-10-06 4:02 ` H. Peter Anvin
2010-10-06 4:14 ` Michel Lespinasse
2010-10-06 4:18 ` Andrew Morton
2010-10-06 4:20 ` H. Peter Anvin
2010-10-05 14:55 ` [PATCH 0/3] V2: Reduce mmap_sem hold times during file backed page faults Rik van Riel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='AANLkTinWxTT=+m_fAudc080OUMwacSefnMbSMBFZgPMH@mail.gmail.com' \
--to=walken@google.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=npiggin@kernel.dk \
--cc=peterz@infradead.org \
--cc=riel@redhat.com \
--cc=torvalds@linux-foundation.org \
--cc=yinghan@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).