linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: John Hubbard <jhubbard@nvidia.com>
To: Minchan Kim <minchan@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>
Cc: kernel-team@lge.com, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	Johannes Weiner <hannes@cmpxchg.org>,
	Michal Hocko <mhocko@suse.com>,
	"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
	Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Subject: Re: [RFC 08/11] mm: make ttu's return boolean
Date: Tue, 7 Mar 2017 23:13:26 -0800	[thread overview]
Message-ID: <70f60783-e098-c1a9-11b4-544530bcd809@nvidia.com> (raw)
In-Reply-To: <1488436765-32350-9-git-send-email-minchan@kernel.org>

On 03/01/2017 10:39 PM, Minchan Kim wrote:
> try_to_unmap returns SWAP_SUCCESS or SWAP_FAIL so it's suitable for
> boolean return. This patch changes it.

Hi Minchan,

So, up until this patch, I definitely like the cleanup, because as you observed, the 
return values didn't need so many different values. However, at this point, I think 
you should stop, and keep the SWAP_SUCCESS and SWAP_FAIL (or maybe even rename them 
to UNMAP_* or TTU_RESULT_*, to match their functions' names better), because 
removing them makes the code considerably less readable.

And since this is billed as a cleanup, we care here, even though this is a minor 
point. :)

Bool return values are sometimes perfect, such as when asking a question:

    bool mode_changed = needs_modeset(crtc_state);

The above is very nice. However, for returning success or failure, bools are not as 
nice, because *usually* success == true, except when you use the errno-based system, 
in which success == 0 (which would translate to false, if you mistakenly treated it 
as a bool). That leads to the reader having to remember which system is in use, 
usually with no visual cues to help.

>
[...]
>  	if (PageSwapCache(p)) {
> @@ -971,7 +971,7 @@ static int hwpoison_user_mappings(struct page *p, unsigned long pfn,
>  		collect_procs(hpage, &tokill, flags & MF_ACTION_REQUIRED);
>
>  	ret = try_to_unmap(hpage, ttu);
> -	if (ret != SWAP_SUCCESS)
> +	if (!ret)
>  		pr_err("Memory failure: %#lx: failed to unmap page (mapcount=%d)\n",
>  		       pfn, page_mapcount(hpage));
>
> @@ -986,8 +986,7 @@ static int hwpoison_user_mappings(struct page *p, unsigned long pfn,
>  	 * any accesses to the poisoned memory.
>  	 */
>  	forcekill = PageDirty(hpage) || (flags & MF_MUST_KILL);
> -	kill_procs(&tokill, forcekill, trapno,
> -		      ret != SWAP_SUCCESS, p, pfn, flags);
> +	kill_procs(&tokill, forcekill, trapno, !ret , p, pfn, flags);

The kill_procs() invocation was a little more readable before.

>
[...]
> diff --git a/mm/vmscan.c b/mm/vmscan.c
> index 170c61f..e4b74f1 100644
> --- a/mm/vmscan.c
> +++ b/mm/vmscan.c
> @@ -966,7 +966,6 @@ static unsigned long shrink_page_list(struct list_head *page_list,
>  		int may_enter_fs;
>  		enum page_references references = PAGEREF_RECLAIM_CLEAN;
>  		bool dirty, writeback;
> -		int ret = SWAP_SUCCESS;
>
>  		cond_resched();
>
> @@ -1139,13 +1138,9 @@ static unsigned long shrink_page_list(struct list_head *page_list,
>  		 * processes. Try to unmap it here.
>  		 */
>  		if (page_mapped(page)) {
> -			switch (ret = try_to_unmap(page,
> -				ttu_flags | TTU_BATCH_FLUSH)) {
> -			case SWAP_FAIL:

Again: the SWAP_FAIL makes it crystal clear which case we're in.

I also wonder if UNMAP_FAIL or TTU_RESULT_FAIL is a better name?

thanks,
John Hubbard
NVIDIA

--
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>

  reply	other threads:[~2017-03-08  7:20 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-02  6:39 [RFC 00/11] make try_to_unmap simple Minchan Kim
2017-03-02  6:39 ` [RFC 01/11] mm: use SWAP_SUCCESS instead of 0 Minchan Kim
2017-03-02 14:27   ` Anshuman Khandual
2017-03-03  3:01     ` Minchan Kim
2017-03-06  9:07       ` Anshuman Khandual
2017-03-07 14:19   ` Kirill A. Shutemov
2017-03-08  6:25     ` Minchan Kim
2017-03-02  6:39 ` [RFC 02/11] mm: remove unncessary ret in page_referenced Minchan Kim
2017-03-02 14:33   ` Anshuman Khandual
2017-03-03  3:03     ` Minchan Kim
2017-03-07 14:20   ` Kirill A. Shutemov
2017-03-02  6:39 ` [RFC 03/11] mm: remove SWAP_DIRTY in ttu Minchan Kim
2017-03-02  7:34   ` Hillf Danton
2017-03-03  2:57     ` Minchan Kim
2017-03-02 14:42   ` Anshuman Khandual
2017-03-07 14:20   ` Kirill A. Shutemov
2017-03-02  6:39 ` [RFC 04/11] mm: remove SWAP_MLOCK check for SWAP_SUCCESS " Minchan Kim
2017-03-02 14:51   ` Anshuman Khandual
2017-03-03  3:04     ` Minchan Kim
2017-03-07 14:26   ` Kirill A. Shutemov
2017-03-08  6:40     ` Minchan Kim
2017-03-02  6:39 ` [RFC 05/11] mm: make the try_to_munlock void function Minchan Kim
2017-03-03 11:43   ` Anshuman Khandual
2017-03-06  2:09     ` Minchan Kim
2017-03-06  9:40       ` Anshuman Khandual
2017-03-07  6:50         ` Minchan Kim
2017-03-07  8:55           ` Anshuman Khandual
2017-03-07 15:17   ` Kirill A. Shutemov
2017-03-08  6:41     ` Minchan Kim
2017-03-02  6:39 ` [RFC 06/11] mm: remove SWAP_MLOCK in ttu Minchan Kim
2017-03-03 12:36   ` Anshuman Khandual
2017-03-06  2:15     ` Minchan Kim
2017-03-07 15:24       ` Kirill A. Shutemov
2017-03-08  6:42         ` Minchan Kim
2017-03-02  6:39 ` [RFC 07/11] mm: remove SWAP_AGAIN " Minchan Kim
2017-03-03 12:54   ` Anshuman Khandual
2017-03-06  2:16     ` Minchan Kim
2017-03-02  6:39 ` [RFC 08/11] mm: make ttu's return boolean Minchan Kim
2017-03-08  7:13   ` John Hubbard [this message]
2017-03-09  6:37     ` Minchan Kim
2017-03-09  6:46       ` John Hubbard
2017-03-02  6:39 ` [RFC 09/11] mm: make rmap_walk void function Minchan Kim
2017-03-02  6:39 ` [RFC 10/11] mm: make rmap_one boolean function Minchan Kim
2017-03-02  6:39 ` [RFC 11/11] mm: remove SWAP_[SUCCESS|AGAIN|FAIL] Minchan Kim
2017-03-03 13:04   ` Anshuman Khandual
2017-03-06  2:18     ` Minchan Kim
2017-03-02 14:22 ` [RFC 00/11] make try_to_unmap simple Anshuman Khandual
2017-03-03  2:11   ` Minchan Kim
2017-03-03  5:39     ` Anshuman Khandual

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=70f60783-e098-c1a9-11b4-544530bcd809@nvidia.com \
    --to=jhubbard@nvidia.com \
    --cc=akpm@linux-foundation.org \
    --cc=hannes@cmpxchg.org \
    --cc=kernel-team@lge.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@suse.com \
    --cc=minchan@kernel.org \
    --cc=n-horiguchi@ah.jp.nec.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).