From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf0-f200.google.com (mail-pf0-f200.google.com [209.85.192.200]) by kanga.kvack.org (Postfix) with ESMTP id 7461D6B0033 for ; Mon, 11 Dec 2017 00:30:12 -0500 (EST) Received: by mail-pf0-f200.google.com with SMTP id a6so13736980pff.17 for ; Sun, 10 Dec 2017 21:30:12 -0800 (PST) Received: from mga17.intel.com (mga17.intel.com. [192.55.52.151]) by mx.google.com with ESMTPS id 133si10337949pfy.414.2017.12.10.21.30.08 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 10 Dec 2017 21:30:08 -0800 (PST) From: "Huang\, Ying" Subject: Re: [PATCH -mm] mm, swap: Fix race between swapoff and some swap operations References: <20171207011426.1633-1-ying.huang@intel.com> <20171207162937.6a179063a7c92ecac77e44af@linux-foundation.org> <20171208014346.GA8915@bbox> <87po7pg4jt.fsf@yhuang-dev.intel.com> <20171208082644.GA14361@bbox> <87k1xxbohp.fsf@yhuang-dev.intel.com> <20171208140909.4e31ba4f1235b638ae68fd5c@linux-foundation.org> Date: Mon, 11 Dec 2017 13:30:03 +0800 In-Reply-To: <20171208140909.4e31ba4f1235b638ae68fd5c@linux-foundation.org> (Andrew Morton's message of "Fri, 8 Dec 2017 14:09:09 -0800") Message-ID: <87609dvnl0.fsf@yhuang-dev.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ascii Sender: owner-linux-mm@kvack.org List-ID: To: Andrew Morton Cc: Minchan Kim , "Paul E. McKenney" , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Hugh Dickins , Johannes Weiner , Tim Chen , Shaohua Li , Mel Gorman , =?utf-8?B?Su+/vXLvv71tZQ==?= Glisse , Michal Hocko , Andrea Arcangeli , David Rientjes , Rik van Riel , Jan Kara , Dave Jiang , Aaron Lu Andrew Morton writes: > On Fri, 08 Dec 2017 16:41:38 +0800 "Huang\, Ying" wrote: > >> > Why do we need srcu here? Is it enough with rcu like below? >> > >> > It might have a bug/room to be optimized about performance/naming. >> > I just wanted to show my intention. >> >> Yes. rcu should work too. But if we use rcu, it may need to be called >> several times to make sure the swap device under us doesn't go away, for >> example, when checking si->max in __swp_swapcount() and >> add_swap_count_continuation(). And I found we need rcu to protect swap >> cache radix tree array too. So I think it may be better to use one >> calling to srcu_read_lock/unlock() instead of multiple callings to >> rcu_read_lock/unlock(). > > Or use stop_machine() ;) It's very crude but it sure is simple. Does > anyone have a swapoff-intensive workload? Sorry, I don't know how to solve the problem with stop_machine(). The problem we try to resolved is that, we have a swap entry, but that swap entry can become invalid because of swappoff between we check it and we use it. So we need to prevent swapoff to be run between checking and using. I don't know how to use stop_machine() in swapoff to wait for all users of swap entry to finish. Anyone can help me on this? Best Regards, Huang, Ying -- 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: email@kvack.org