From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qk1-f172.google.com (mail-qk1-f172.google.com [209.85.222.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 55BEB446BEA for ; Tue, 21 Jul 2026 11:33:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784633610; cv=none; b=Sp2RtY80WW3FMSOMtGvtwkfASfcRgEQTJ60pYP8pV7jVO1W6n4naWtHSq5k5U01riPNexQmSIk5/s5R0wcvov5yt/eRbDBoA/XjbtEab2qDS3jVUtweS+4GTqt15I0d836QhnU+2Difby1wZpRMlJ+GES31I4eGpmP1K7wlEOUI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784633610; c=relaxed/simple; bh=sHvRopr1Ypm5jQAY0ZfOEkqr7Mdr23aY+FHbuYWUkwI=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=R9eMPTVcx6ANPfK4hlLNJQwK9gIg5lLS/FyjpK9ZRiGZBsD7n3dvg2Jnu7st4FXoFfYZm4uO3GC0C4YGZGB0XPQ1KVSkeTQfd309kLl89ZJZZQsuMWTWjnRQ4AsWSFTVVNZA7kzox8o4H29iWmmYuMGwAwxzH7hy9hDR3dYdciA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=cmpxchg.org; spf=pass smtp.mailfrom=cmpxchg.org; dkim=pass (2048-bit key) header.d=cmpxchg.org header.i=@cmpxchg.org header.b=DlyjcD8Z; arc=none smtp.client-ip=209.85.222.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=cmpxchg.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=cmpxchg.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=cmpxchg.org header.i=@cmpxchg.org header.b="DlyjcD8Z" Received: by mail-qk1-f172.google.com with SMTP id af79cd13be357-9305a2121a1so782196285a.2 for ; Tue, 21 Jul 2026 04:33:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpxchg.org; s=google; t=1784633600; x=1785238400; darn=vger.kernel.org; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=8ClK9kZgJgn1pv+f64kpoxUD+b6fg3ben0ahgbGiQz4=; b=DlyjcD8ZL09b+nDrY5TZLF1ThL5qWPyutaobOJ5+PMg3QgRzJixvWA/EU6T9LcZ6Xz QpfQ80DUEbgeqnE5YPwYFaHue/zNz4/TOXFFF0ow5HrduslcFLOXZS76axde6qvZPUCr 85APb0Vos/GxXAAKHqCJibKhx+FdEycZZ+wY1wBSJ4D41cE11oL4Fn5bqOTBQ0XO3o/8 TU2MejV2d/jr6R44d0nYn7mnSHpby1K4H4g4qnuik38vC1Ac2u+qXAn4q9T1rI4Gohm7 W4XIyc9BnJYv721zgLD+33OiwGOaOQZ6BvfiQBbSmqBpZsKmAME2kTqS06pIFePrZS4l nVpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784633600; x=1785238400; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=8ClK9kZgJgn1pv+f64kpoxUD+b6fg3ben0ahgbGiQz4=; b=iEh4QfiKoPTgnOoJ7wyIPipaVOJ35WNuoDdqk06pKi1FiLpDG1w58ms19jW9141Y/1 fG2grFOMCEmTSUux3zke57A4wODYzFOT5MPH/qHVX0tQfe0CBwbN0YGAijl2ieSQzYmq iHZCeWbJZxkDuam8mh7O7fvaCpTwreFhRPlAQIEV/6RuvSUi9Yy6RmmVELpavH//n+fw 0ITVLwS69alEvyQ9r9+OdmYM8OP67Un5ymGLIDrDG8pjBLS45/MnOQBG3rJbPe69wRgr YLfSS/1lbbHk71F4BaN6i5uKToKcSd6zTrj04aEFwAijSUtd7hOaPBFsPcB8i/lT9vKf y28g== X-Forwarded-Encrypted: i=1; AHgh+RobEO+/oO7cM68b5xoa4Jqva38jr7AvtZkHaNfDesRUZZvFU1WqiN0kVzrqrpYfLcag7y1LHpY65+HpOrw=@vger.kernel.org X-Gm-Message-State: AOJu0YyWKR+9j5JMDYtTa2n99w6izYOskggCWSbLGmtszwXMdbVgsPuA SUiJPx+1JEUOJ0IDdRc02s6pEdfT9r8oirBANB58puErlrLqToLzv3axOQ6lfc7ReqE= X-Gm-Gg: AfdE7ckHKAN93VpEFx9yuM/tspxPYNOhsIF3Kzlmu/S1W6PqiaZEGpfAeYhXkn0blOu vy/yLs273oNgMYULYfLfr5mxbOtmw2hiu6DRWaxV3x9kCkmsiX/DlTMNWHvnTMV54F8Ec9fivG6 bt5BAcw0q+AJ2/6ZkWGQ/VfRmramvPWFnL/BjgFcmZ6OvoNJm0UKCrt51Oggjk7xPrm/Qut6+5b fVkAzHMXpj/GHnkvgGBRpt1Sd3zRVMq4fihMChk2KctLKWsuG6fHeQg7K5DAE193dZ06ww25fV5 vb4bY1pg9KAepDKvdkyc8g0yOhTiWzd4L6gahTQC9OWh2SM2IdYjpls+w/zRinYhFcYMpuCUDPd m0Y4xTvk+9PlRMZ35VvfEtFcDGmGtXf1AbO1q2enDSuQ6Ioi86uU7yPvPelL2slVvIsqGBGYVRn MB X-Received: by 2002:a05:620a:3709:b0:92e:45e4:c6e with SMTP id af79cd13be357-930b3f37283mr1768481785a.22.1784633600331; Tue, 21 Jul 2026 04:33:20 -0700 (PDT) Received: from localhost ([2603:7001:f100:500:365a:60ff:fe62:ff29]) by smtp.gmail.com with ESMTPSA id af79cd13be357-930b545e253sm1074421785a.36.2026.07.21.04.33.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Jul 2026 04:33:19 -0700 (PDT) Date: Tue, 21 Jul 2026 07:33:18 -0400 From: Johannes Weiner To: Nhat Pham Cc: Alexandre Ghiti , Yosry Ahmed , Andrew Morton , Chris Li , Kairui Song , Chengming Zhou , "Matthew Wilcox (Oracle)" , Jan Kara , Kemeng Shi , Baoquan He , Barry Song , Youngjun Park , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: Re: [PATCH 1/2] mm: zswap: free synchronous-IO writeback folios directly Message-ID: References: <20260718093723.153324-1-alex@ghiti.fr> <20260718093723.153324-2-alex@ghiti.fr> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: On Mon, Jul 20, 2026 at 08:56:32AM -0700, Nhat Pham wrote: > > @@ -972,6 +972,30 @@ static bool zswap_decompress(struct zswap_entry *entry, struct folio *folio) > > /********************************* > > * writeback code > > **********************************/ > > +static void zswap_writeback_free_folio(struct folio *folio) > > +{ > > + folio_lock(folio); > > + > > + /* The folio was allocated off the LRU and nothing re-adds it here. */ > > + VM_WARN_ON_ONCE_FOLIO(folio_test_lru(folio), folio); > > + > > + /* > > + * Gate remove_mapping() on folio_test_swapcache(): a racing swapin may > > + * have freed the swap slot (folio_free_swap()) and dropped the folio from > > + * the cache, and remove_mapping() must not run on a non-swapcache folio > > + * (it would trip __remove_mapping()'s mapping == folio_mapping() check). > > + */ > > + if (folio_test_swapcache(folio) && > > + remove_mapping(swap_address_space(folio->swap), folio)) > > Hmm I think you also have to test for writeback and dirty here right? > > After a racing swapin freed the swap slot, the folio might be dirtied > and swapped out again. We probably shouldn't try to remove_mapping() > such a folio? remove_mapping() itself handles dirty state. It fails in that case.