Received: by 2002:a25:e7d8:0:0:0:0:0 with SMTP id e207csp941661ybh; Tue, 10 Mar 2020 11:15:26 -0700 (PDT) X-Google-Smtp-Source: ADFU+vteACjHncpxNNy2t6U5VUEsl+I5pq5nSWdrKbm/NAzVjvJIAoaA9EgHJWX0b5fp2NEuN3X4 X-Received: by 2002:a05:6808:5d7:: with SMTP id d23mr2132844oij.63.1583864126643; Tue, 10 Mar 2020 11:15:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1583864126; cv=none; d=google.com; s=arc-20160816; b=ZYcFQZx373E0uDQraz9fhWeg1V7W8zezZ9N8e9YfxxwsmmlKdAh2vJBus1aoOexQL2 pI9DQYgIZ0UhsAs+yU/0A2ueczjQS77+6maGrs1XWFMv5XnrMf+0x9WREY2qGkDgBHWJ fukeuoYBPJr+LRUgwlOECiIzRf2AZzx7a2gB2Js3gJmj6cV2uHLWw6+NK+ZaJtW58WiJ /H1CNX/nI9Boc8GhJYo5lS0ZXnXCAO45wY96hIHpVBxrP4TEe6UZ4J/rpFoOEPvgmARN L8Oj/jmzOxr0cNlscuFe4e5uCkN5WI5sFJ3MWQ2Zx3ouY+S2EtbL3JtO+SznHArjtAsK xm2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:subject:autocrypt:from:references:cc:to; bh=PY2rwuYBLO9deRFN6XmhBlAN1HldBEGDvVNcp6Dx2k8=; b=S/pKi+JRsfF6+3BeedQFSCpK8XR9FEqltxATDO472wSHoCFq0hm61n6tqfZViDHRlX xFfhscxFyA+U5YgLvqVjN7Eyf7H1f7Uh4p6wCDuTDLbQ6rlkTj8B1SZewJM6f/xG8a55 aWLreYf4axgnIiQyksx/CvbMtOwEuRu3sGSyF0qbXXRlVorSf2JayP4bIJKKboT0XusL 4QgFm0ookErslENnuibvF9U9yANf9O5WOjgMmeGoFhrHEi4aKLJXnLQTPs+6wxScJ4v7 ki7vzn2Zda/7pSA3UjlJKIUMZF/yGu8g8zD2c8bL1GwD+hZ8/KSWJnv3F9OG90pvvy3d JdbA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k24si5122441otf.213.2020.03.10.11.15.14; Tue, 10 Mar 2020 11:15:26 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726445AbgCJSNP (ORCPT + 99 others); Tue, 10 Mar 2020 14:13:15 -0400 Received: from mga01.intel.com ([192.55.52.88]:48652 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726290AbgCJSNP (ORCPT ); Tue, 10 Mar 2020 14:13:15 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Mar 2020 11:13:14 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,537,1574150400"; d="scan'208";a="415283815" Received: from schen9-desk.jf.intel.com (HELO [10.54.74.162]) ([10.54.74.162]) by orsmga005.jf.intel.com with ESMTP; 10 Mar 2020 11:13:13 -0700 To: Andrew Morton , Wei Yang Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <20200309090940.34130-1-richard.weiyang@linux.alibaba.com> <20200309174854.b6b8c7f019c3dde048c28f94@linux-foundation.org> From: Tim Chen Autocrypt: addr=tim.c.chen@linux.intel.com; prefer-encrypt=mutual; keydata= mQINBE6ONugBEAC1c8laQ2QrezbYFetwrzD0v8rOqanj5X1jkySQr3hm/rqVcDJudcfdSMv0 BNCCjt2dofFxVfRL0G8eQR4qoSgzDGDzoFva3NjTJ/34TlK9MMouLY7X5x3sXdZtrV4zhKGv 3Rt2osfARdH3QDoTUHujhQxlcPk7cwjTXe4o3aHIFbcIBUmxhqPaz3AMfdCqbhd7uWe9MAZX 7M9vk6PboyO4PgZRAs5lWRoD4ZfROtSViX49KEkO7BDClacVsODITpiaWtZVDxkYUX/D9OxG AkxmqrCxZxxZHDQos1SnS08aKD0QITm/LWQtwx1y0P4GGMXRlIAQE4rK69BDvzSaLB45ppOw AO7kw8aR3eu/sW8p016dx34bUFFTwbILJFvazpvRImdjmZGcTcvRd8QgmhNV5INyGwtfA8sn L4V13aZNZA9eWd+iuB8qZfoFiyAeHNWzLX/Moi8hB7LxFuEGnvbxYByRS83jsxjH2Bd49bTi XOsAY/YyGj6gl8KkjSbKOkj0IRy28nLisFdGBvgeQrvaLaA06VexptmrLjp1Qtyesw6zIJeP oHUImJltjPjFvyfkuIPfVIB87kukpB78bhSRA5mC365LsLRl+nrX7SauEo8b7MX0qbW9pg0f wsiyCCK0ioTTm4IWL2wiDB7PeiJSsViBORNKoxA093B42BWFJQARAQABtDRUaW0gQ2hlbiAo d29yayByZWxhdGVkKSA8dGltLmMuY2hlbkBsaW51eC5pbnRlbC5jb20+iQI+BBMBAgAoAhsD BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCXFIuxAUJEYZe0wAKCRCiZ7WKota4STH3EACW 1jBRzdzEd5QeTQWrTtB0Dxs5cC8/P7gEYlYQCr3Dod8fG7UcPbY7wlZXc3vr7+A47/bSTVc0 DhUAUwJT+VBMIpKdYUbvfjmgicL9mOYW73/PHTO38BsMyoeOtuZlyoUl3yoxWmIqD4S1xV04 q5qKyTakghFa+1ZlGTAIqjIzixY0E6309spVTHoImJTkXNdDQSF0AxjW0YNejt52rkGXXSoi IgYLRb3mLJE/k1KziYtXbkgQRYssty3n731prN5XrupcS4AiZIQl6+uG7nN2DGn9ozy2dgTi smPAOFH7PKJwj8UU8HUYtX24mQA6LKRNmOgB290PvrIy89FsBot/xKT2kpSlk20Ftmke7KCa 65br/ExDzfaBKLynztcF8o72DXuJ4nS2IxfT/Zmkekvvx/s9R4kyPyebJ5IA/CH2Ez6kXIP+ q0QVS25WF21vOtK52buUgt4SeRbqSpTZc8bpBBpWQcmeJqleo19WzITojpt0JvdVNC/1H7mF 4l7og76MYSTCqIKcLzvKFeJSie50PM3IOPp4U2czSrmZURlTO0o1TRAa7Z5v/j8KxtSJKTgD lYKhR0MTIaNw3z5LPWCCYCmYfcwCsIa2vd3aZr3/Ao31ZnBuF4K2LCkZR7RQgLu+y5Tr8P7c e82t/AhTZrzQowzP0Vl6NQo8N6C2fcwjSrkCDQROjjboARAAx+LxKhznLH0RFvuBEGTcntrC 3S0tpYmVsuWbdWr2ZL9VqZmXh6UWb0K7w7OpPNW1FiaWtVLnG1nuMmBJhE5jpYsi+yU8sbMA 5BEiQn2hUo0k5eww5/oiyNI9H7vql9h628JhYd9T1CcDMghTNOKfCPNGzQ8Js33cFnszqL4I N9jh+qdg5FnMHs/+oBNtlvNjD1dQdM6gm8WLhFttXNPn7nRUPuLQxTqbuoPgoTmxUxR3/M5A KDjntKEdYZziBYfQJkvfLJdnRZnuHvXhO2EU1/7bAhdz7nULZktw9j1Sp9zRYfKRnQdIvXXa jHkOn3N41n0zjoKV1J1KpAH3UcVfOmnTj+u6iVMW5dkxLo07CddJDaayXtCBSmmd90OG0Odx cq9VaIu/DOQJ8OZU3JORiuuq40jlFsF1fy7nZSvQFsJlSmHkb+cDMZDc1yk0ko65girmNjMF hsAdVYfVsqS1TJrnengBgbPgesYO5eY0Tm3+0pa07EkONsxnzyWJDn4fh/eA6IEUo2JrOrex O6cRBNv9dwrUfJbMgzFeKdoyq/Zwe9QmdStkFpoh9036iWsj6Nt58NhXP8WDHOfBg9o86z9O VMZMC2Q0r6pGm7L0yHmPiixrxWdW0dGKvTHu/DH/ORUrjBYYeMsCc4jWoUt4Xq49LX98KDGN dhkZDGwKnAUAEQEAAYkCJQQYAQIADwIbDAUCXFIulQUJEYZenwAKCRCiZ7WKota4SYqUEACj P/GMnWbaG6s4TPM5Dg6lkiSjFLWWJi74m34I19vaX2CAJDxPXoTU6ya8KwNgXU4yhVq7TMId keQGTIw/fnCv3RLNRcTAapLarxwDPRzzq2snkZKIeNh+WcwilFjTpTRASRMRy9ehKYMq6Zh7 PXXULzxblhF60dsvi7CuRsyiYprJg0h2iZVJbCIjhumCrsLnZ531SbZpnWz6OJM9Y16+HILp iZ77miSE87+xNa5Ye1W1ASRNnTd9ftWoTgLezi0/MeZVQ4Qz2Shk0MIOu56UxBb0asIaOgRj B5RGfDpbHfjy3Ja5WBDWgUQGgLd2b5B6MVruiFjpYK5WwDGPsj0nAOoENByJ+Oa6vvP2Olkl gQzSV2zm9vjgWeWx9H+X0eq40U+ounxTLJYNoJLK3jSkguwdXOfL2/Bvj2IyU35EOC5sgO6h VRt3kA/JPvZK+6MDxXmm6R8OyohR8uM/9NCb9aDw/DnLEWcFPHfzzFFn0idp7zD5SNgAXHzV PFY6UGIm86OuPZuSG31R0AU5zvcmWCeIvhxl5ZNfmZtv5h8TgmfGAgF4PSD0x/Bq4qobcfaL ugWG5FwiybPzu2H9ZLGoaRwRmCnzblJG0pRzNaC/F+0hNf63F1iSXzIlncHZ3By15bnt5QDk l50q2K/r651xphs7CGEdKi1nU0YJVbQxJQ== Subject: Re: [PATCH] mm/swap_slots.c: don't reset the cache slot after use Message-ID: <005f7454-16db-e8b5-dde2-8f2ddaa42932@linux.intel.com> Date: Tue, 10 Mar 2020 11:13:13 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.2 MIME-Version: 1.0 In-Reply-To: <20200309174854.b6b8c7f019c3dde048c28f94@linux-foundation.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 3/9/20 5:48 PM, Andrew Morton wrote: > On Mon, 9 Mar 2020 17:09:40 +0800 Wei Yang wrote: > >> Currently we would clear the cache slot if it is used. While this is not >> necessary, since this entry would not be used until refilled. >> >> Leave it untouched and assigned the value directly to entry which makes >> the code little more neat. >> >> Also this patch merges the else and if, since this is the only case we >> refill and repeat swap cache. > > cc Tim, who can hopefully remember how this code works ;) > >> --- a/mm/swap_slots.c >> +++ b/mm/swap_slots.c >> @@ -309,7 +309,7 @@ int free_swap_slot(swp_entry_t entry) >> >> swp_entry_t get_swap_page(struct page *page) >> { >> - swp_entry_t entry, *pentry; >> + swp_entry_t entry; >> struct swap_slots_cache *cache; >> >> entry.val = 0; >> @@ -336,13 +336,10 @@ swp_entry_t get_swap_page(struct page *page) >> if (cache->slots) { >> repeat: >> if (cache->nr) { >> - pentry = &cache->slots[cache->cur++]; >> - entry = *pentry; >> - pentry->val = 0; The cache entry was cleared after assignment for defensive programming, So there's little chance I will be using a slot that has been assigned to someone else. When I wrote swap_slots.c, this code was new and I want to make sure that if something went wrong, and I assigned a swap slot that I shouldn't, I will be able to detect quickly as I will only be stepping on entry 0. Otherwise such bug will be harder to detect as we will have two users of some random swap slot stepping on each other. I'm okay if we want to get rid of this logic, now that the code has been working correctly long enough. But I think is good hygiene to clear the cached entry after it has been assigned. >> + entry = cache->slots[cache->cur++]; >> cache->nr--; >> - } else { >> - if (refill_swap_slots_cache(cache)) >> - goto repeat; >> + } else if (refill_swap_slots_cache(cache)) { This change looks fine. >> + goto repeat; >> } Tim