From: "Liam R. Howlett" <Liam.Howlett@oracle.com>
To: SeongJae Park <sj@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
David Hildenbrand <david@redhat.com>,
Davidlohr Bueso <dave@stgolabs.net>,
Lorenzo Stoakes <lorenzo.stoakes@oracle.com>,
Shakeel Butt <shakeel.butt@linux.dev>,
Vlastimil Babka <vbabka@suse.cz>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH 3/4] mm/madvise: split out madvise() behavior execution
Date: Thu, 6 Feb 2025 15:30:15 -0500 [thread overview]
Message-ID: <lvatr5ha5xekeqr7j6evg6lacr7kb2j7jwhsfvgq5u3wgknvhz@32tlhxkx45qg> (raw)
In-Reply-To: <20250206061517.2958-4-sj@kernel.org>
* SeongJae Park <sj@kernel.org> [250206 01:15]:
> Split out the madvise behavior applying logic from do_madvise() to make
> it easier to reuse from the following change.
>
> Reviewed-by: Shakeel Butt <shakeel.butt@linux.dev>
> Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
> Signed-off-by: SeongJae Park <sj@kernel.org>
Reviewed-by: Liam R. Howlett <howlett@gmail.com>
> ---
> mm/madvise.c | 53 +++++++++++++++++++++++++++++-----------------------
> 1 file changed, 30 insertions(+), 23 deletions(-)
>
> diff --git a/mm/madvise.c b/mm/madvise.c
> index efab2878be7c..31e5df75b926 100644
> --- a/mm/madvise.c
> +++ b/mm/madvise.c
> @@ -1615,6 +1615,35 @@ static bool is_valid_madvise(unsigned long start, size_t len_in, int behavior)
> return true;
> }
>
> +static int madvise_do_behavior(struct mm_struct *mm,
> + unsigned long start, size_t len_in, size_t len, int behavior)
> +{
> + struct blk_plug plug;
> + unsigned long end;
> + int error;
> +
> +#ifdef CONFIG_MEMORY_FAILURE
> + if (behavior == MADV_HWPOISON || behavior == MADV_SOFT_OFFLINE)
> + return madvise_inject_error(behavior, start, start + len_in);
> +#endif
> + start = untagged_addr_remote(mm, start);
> + end = start + len;
> +
> + blk_start_plug(&plug);
> + switch (behavior) {
> + case MADV_POPULATE_READ:
> + case MADV_POPULATE_WRITE:
> + error = madvise_populate(mm, start, end, behavior);
> + break;
> + default:
> + error = madvise_walk_vmas(mm, start, end, behavior,
> + madvise_vma_behavior);
> + break;
> + }
> + blk_finish_plug(&plug);
> + return error;
> +}
> +
> /*
> * The madvise(2) system call.
> *
> @@ -1692,7 +1721,6 @@ int do_madvise(struct mm_struct *mm, unsigned long start, size_t len_in, int beh
> unsigned long end;
> int error;
> size_t len;
> - struct blk_plug plug;
>
> if (!is_valid_madvise(start, len_in, behavior))
> return -EINVAL;
> @@ -1706,28 +1734,7 @@ int do_madvise(struct mm_struct *mm, unsigned long start, size_t len_in, int beh
> error = madvise_lock(mm, behavior);
> if (error)
> return error;
> -
> -#ifdef CONFIG_MEMORY_FAILURE
> - if (behavior == MADV_HWPOISON || behavior == MADV_SOFT_OFFLINE)
> - return madvise_inject_error(behavior, start, start + len_in);
> -#endif
> -
> - start = untagged_addr_remote(mm, start);
> - end = start + len;
> -
> - blk_start_plug(&plug);
> - switch (behavior) {
> - case MADV_POPULATE_READ:
> - case MADV_POPULATE_WRITE:
> - error = madvise_populate(mm, start, end, behavior);
> - break;
> - default:
> - error = madvise_walk_vmas(mm, start, end, behavior,
> - madvise_vma_behavior);
> - break;
> - }
> - blk_finish_plug(&plug);
> -
> + error = madvise_do_behavior(mm, start, len_in, len, behavior);
> madvise_unlock(mm, behavior);
>
> return error;
> --
> 2.39.5
next prev parent reply other threads:[~2025-02-06 20:30 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-06 6:15 [PATCH 0/4] mm/madvise: remove redundant mmap_lock operations from process_madvise() SeongJae Park
2025-02-06 6:15 ` [PATCH 1/4] mm/madvise: split out mmap locking operations for madvise() SeongJae Park
2025-02-06 20:27 ` Liam R. Howlett
2025-02-06 6:15 ` [PATCH 2/4] mm/madvise: split out madvise input validity check SeongJae Park
2025-02-06 20:29 ` Liam R. Howlett
2025-02-06 6:15 ` [PATCH 3/4] mm/madvise: split out madvise() behavior execution SeongJae Park
2025-02-06 20:30 ` Liam R. Howlett [this message]
2025-02-06 6:15 ` [PATCH 4/4] mm/madvise: remove redundant mmap_lock operations from process_madvise() SeongJae Park
2025-02-06 13:04 ` Lorenzo Stoakes
2025-02-06 16:53 ` SeongJae Park
2025-02-06 20:32 ` Liam R. Howlett
2025-02-11 5:30 ` Lai, Yi
2025-02-11 6:37 ` SeongJae Park
2025-02-11 10:34 ` Lorenzo Stoakes
2025-02-11 18:32 ` SeongJae Park
2025-02-11 8:48 ` [PATCH 0/4] " Vern Hao
2025-02-11 18:28 ` SeongJae Park
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=lvatr5ha5xekeqr7j6evg6lacr7kb2j7jwhsfvgq5u3wgknvhz@32tlhxkx45qg \
--to=liam.howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=dave@stgolabs.net \
--cc=david@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=shakeel.butt@linux.dev \
--cc=sj@kernel.org \
--cc=vbabka@suse.cz \
/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