From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1BE5BC77B75 for ; Tue, 23 May 2023 01:01:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8FE64900002; Mon, 22 May 2023 21:01:31 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8AE696B0074; Mon, 22 May 2023 21:01:31 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 74F70900002; Mon, 22 May 2023 21:01:31 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 620EC6B0072 for ; Mon, 22 May 2023 21:01:31 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 3064C140523 for ; Tue, 23 May 2023 01:01:31 +0000 (UTC) X-FDA: 80819716782.13.BBB4676 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by imf24.hostedemail.com (Postfix) with ESMTP id E683D18000A for ; Tue, 23 May 2023 01:01:27 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=n7xasn5r; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf24.hostedemail.com: domain of ying.huang@intel.com designates 134.134.136.65 as permitted sender) smtp.mailfrom=ying.huang@intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684803688; a=rsa-sha256; cv=none; b=Y+MgeeYO6ej5EsjAaG+QAfup1yQlVnNDn86OpqmiXniMX4ZkVBwCyv4G9MG0IF83M13OBC 4jxSrSk2cSOrSLPOt8pAO72pkfJwlCOYyMGW3vZV7be61B/4uOgkANvUG6ujjaAGYOQOkF 1+IupmbnXiQdNbcMN5C5UjtbEc/RGWE= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=n7xasn5r; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf24.hostedemail.com: domain of ying.huang@intel.com designates 134.134.136.65 as permitted sender) smtp.mailfrom=ying.huang@intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684803688; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=wewkENa02NPNyP/xeVf5rO5f62Xfkkycpa12/Pkb0JA=; b=RRTNPVgPEya2v+HC9YJ6RLa2JamwHh8ui+Lfbo0dQeSVhk50ZGTGZsvf/sWvEY29YZZeLE nshgxggARLrjlhJpuVWUdXS/gBXxdXz+WxNLpG8RZ6WvaSVor2+PeQzr4MMWfLsT71nIgU nfRizhFXLJYat3tytGG+YE9gD/zc3ys= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1684803688; x=1716339688; h=from:to:cc:subject:references:date:in-reply-to: message-id:mime-version; bh=+9pQQnU8oW2SS9zfDiqS0+EStQ/0LzPauo3itGwf9oM=; b=n7xasn5rUOLC/Unny7Ci92fu5Qd5HYGdY7UH3MZPEZpl4STiCSUCzeBU hn1g2jZ9Kd3pNez/Icq8Bdx2mwsGgyr0nf8HUqpfY8kyp1qAdGalTEIu1 u+61rKG+QzWKFB1lmUQJZjAbxse4GpxUDJxoqYHz3lHUuTRLv6r0lzn9m yce3csue5WX3U85cD+YFvG4/sXpIkRjaMo400wEfsaMY3hPyuTQaKHWGs PgEQbjcdm4lOxYd5G513d1oNmHmFqM4KbywpVFKefNkNN4IiTU71h/5ov QdYtiGCn+2pdwS72UJSC11uFqNtl0EGBFhKvfAg6TLuaxoGUGBQmRcUiv g==; X-IronPort-AV: E=McAfee;i="6600,9927,10718"; a="356316328" X-IronPort-AV: E=Sophos;i="6.00,184,1681196400"; d="scan'208";a="356316328" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 May 2023 18:01:26 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10718"; a="815907679" X-IronPort-AV: E=Sophos;i="6.00,184,1681196400"; d="scan'208";a="815907679" Received: from yhuang6-desk2.sh.intel.com (HELO yhuang6-desk2.ccr.corp.intel.com) ([10.238.208.55]) by fmsmga002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 May 2023 18:01:23 -0700 From: "Huang, Ying" To: David Hildenbrand Cc: Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Hugh Dickins , Johannes Weiner , Matthew Wilcox , Michal Hocko , Minchan Kim , Tim Chen , Yang Shi , Yu Zhao Subject: Re: [PATCH -V2 5/5] swap: comments get_swap_device() with usage rule References: <20230522070905.16773-1-ying.huang@intel.com> <20230522070905.16773-6-ying.huang@intel.com> <2ad811a6-899d-3be8-2bd3-29ebed3308a8@redhat.com> Date: Tue, 23 May 2023 09:00:20 +0800 In-Reply-To: <2ad811a6-899d-3be8-2bd3-29ebed3308a8@redhat.com> (David Hildenbrand's message of "Mon, 22 May 2023 14:07:07 +0200") Message-ID: <87jzwzyi8r.fsf@yhuang6-desk2.ccr.corp.intel.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=ascii X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: E683D18000A X-Stat-Signature: ku3aokjnhfsbimw4gcr1mt6qz8wg6zr7 X-HE-Tag: 1684803687-182055 X-HE-Meta: U2FsdGVkX19hiY7tKBJXKSH0FX+IhpBGOvE9D3bbZSOfR0v30H5HepeDIkp+dJ2rqBL/GtXtMBZkulr3FxgxkyId2jRt/tLH15x+0158NUcBVBA4tpf36mwzL3NvRXDhs7fObN7YRJvDyTcbt3FvtDPJZYSOzNneuoUgDGTIEdcaQnsnb8yR/LNpw7wuF0/hgnX6L1IhmD7aAiXKEi0R/3xuKB8wGV+Bi7nSTM+Hq+jqYLGS8DQ/7WhstUKWhAxyY5LWQrAxtGHii1tXGmYdthTYRWu4gghdV5OfNywIfoiXEsvrSWkm6L3rNIfsFIUcZUTraY6z77bk/k37X+Nur/UOGVvNEHUJSdLn7UORaSpv2STG4/gT5WPgJNLNEQ6fFwvpAl9j2QS6P+zfgWlSI1NAPpHIU92NolmOWCTiMEqzkLy8kjGO9/aqv9E1dRaspFtt1ZSs+8CwOxt2RvMcubvvjQC9jlkLZW/ub9tgIrbyH7AZPrZQSXeqlH74WvFZsbkmOpVJTsDaNTq1yjdAdWUGx9sGwE1eZUNsUMHtQVcnrcWQ/4Fn0yXze9tCMO+1fc4ubRjUnCa528kq/+a5FbbdFkJZXTD/wDHhfThMdKL6XjceUAVow6q+sx6lC3n+Q/0B/38A/Fc+BOAYBRAjI0tGBisabGmDQqjWLfV0DQlxGJCQd0PvZSqVolUid4YO212aMIhk05des0P/fpFI7ZrYS7Fs1KEV+vANbGL7jSEgjMKaWxVG6k1RHx10ZhhGnyc5ghuPYF3pBylre1C84UkSU1e4oIZnQyHT3/QoThx5HG037U/AhAvatxuuqBWPdplpcN5A99VAOIX/MY6iDlEcFM3MfsHYsAOImXJUGRikbJc8SoBDmJc5/KDE5+9dJAcRhqn3XP54lUImNy41L0AA89l5y12gQuhZXjtnsa6fPP5xjm2LyMCw1u0KEY5784jjFUZAB2MbQBM/uuX m+mE4f7F 52UGrmY57ESgpSgrVWCNUJ5ogjAkgturgZejCXaMBX1Bg/uqjMa9BTuvBJytYJAfmyWxPg930sG5/cHaL2UAQY1lUKxHv+G9Hb27BSLk31oFX3C06mP2pe+g8FiELrpkzgDXyNQr71UMRb+HN4rLUTDxnCQxN20APVimAZqtHY3MsHiLUsZLDiiiv7cMxGMSz3UvCT1ecGK8e2eF/OeH8GLoutGPB4lqX4QizgNHYifIqZWZgHbtlGbODDGLkXR9vEu/7gpE9JexLHvpcif6SyjIIX+9dAxTim0oOAcjuiOBTUWQ1jHauivom1YclGo/zHDG6OpDM7cbDZ1hL8/QG5471BrYeig3EfiU7VOAgMdNnKnmFWQG8UAwV+GLec+YC8acnq+eykNMeKuvuA+7yGeQawSQycZtUCiDYNuwCTwqJihCpIB+DbsisbH06HV2pDln3hwsy0DeH1N408N9Fr3WL1mqgwGOLD7ejBFMkbKdP0hsYHAE/0UXnCPSQHANFwTNBPCBgeRgIU7YJZ3ZedXoilw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: David Hildenbrand writes: > On 22.05.23 09:09, Huang Ying wrote: >> The general rule to use a swap entry is as follows. >> When we get a swap entry, if there isn't some other way to prevent >> swapoff, such as page lock for swap cache, page table lock, etc., the >> swap entry may become invalid because of swapoff. Then, we need to >> enclose all swap related functions with get_swap_device() and >> put_swap_device(), unless the swap functions call >> get/put_swap_device() by themselves. >> Add the rule as comments of get_swap_device(). >> Signed-off-by: "Huang, Ying" >> Cc: David Hildenbrand >> Cc: Hugh Dickins >> Cc: Johannes Weiner >> Cc: Matthew Wilcox >> Cc: Michal Hocko >> Cc: Minchan Kim >> Cc: Tim Chen >> Cc: Yang Shi >> Cc: Yu Zhao >> --- >> mm/swapfile.c | 12 +++++++++--- >> 1 file changed, 9 insertions(+), 3 deletions(-) >> diff --git a/mm/swapfile.c b/mm/swapfile.c >> index 4dbaea64635d..0c1cb935b2eb 100644 >> --- a/mm/swapfile.c >> +++ b/mm/swapfile.c >> @@ -1219,6 +1219,13 @@ static unsigned char __swap_entry_free_locked(struct swap_info_struct *p, >> } >> /* >> + * When we get a swap entry, if there isn't some other way to prevent >> + * swapoff, such as page lock for swap cache, page table lock, etc., > > Again "page lock for swap cache" might be imprecise. Sure. Will revise this. >> + * the swap entry may become invalid because of swapoff. Then, we >> + * need to enclose all swap related functions with get_swap_device() >> + * and put_swap_device(), unless the swap functions call >> + * get/put_swap_device() by themselves. >> + * >> * Check whether swap entry is valid in the swap device. If so, >> * return pointer to swap_info_struct, and keep the swap entry valid >> * via preventing the swap device from being swapoff, until >> @@ -1227,9 +1234,8 @@ static unsigned char __swap_entry_free_locked(struct swap_info_struct *p, >> * Notice that swapoff or swapoff+swapon can still happen before the >> * percpu_ref_tryget_live() in get_swap_device() or after the >> * percpu_ref_put() in put_swap_device() if there isn't any other way >> - * to prevent swapoff, such as page lock, page table lock, etc. The >> - * caller must be prepared for that. For example, the following >> - * situation is possible. >> + * to prevent swapoff. The caller must be prepared for that. For >> + * example, the following situation is possible. >> * >> * CPU1 CPU2 >> * do_swap_page() > > Reviewed-by: David Hildenbrand Thanks! Best Regards, Huang, Ying