From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qv1-f53.google.com (mail-qv1-f53.google.com [209.85.219.53]) (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 CADC0377AA6 for ; Tue, 21 Jul 2026 11:47:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.53 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784634458; cv=none; b=P5dJWtY73wzD4o+TvYxeNWI1x+QuKxzbTCtOXQSjWcQR0ojG5uyiCWL441kVN0RjwEO0p+WGKQK5ed9FZzxF9zP+pU+5h3jryIDD9zH0sVeaRdi16cAXicnDy7cPs9h1zo5H48wDpGg+bVcaVWb1Q5JJkfWhzAJsqp6FR6KX628= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784634458; c=relaxed/simple; bh=d9nzsQKkA4gvGxpJizz2CGlvAPHH1WuAdZg7iqIPuMU=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=GCFISpEpP7ToOvhhyLhhp5yYfz0YZdDTKVYbkv+/tONf+PzGxq/1p2Z3oXJU0HDd9TiI42r7422IpMqRqjroQect80DqAFtchJ1jq3p4PwHfaeN/WBT4uEO7P1B/O+ZUjDVVGp/jd0VIlZ5fT87NIkrgtND6i46F4SgeUnqcVQ0= 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=ATWflK16; arc=none smtp.client-ip=209.85.219.53 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="ATWflK16" Received: by mail-qv1-f53.google.com with SMTP id 6a1803df08f44-902fc790cd5so105084976d6.1 for ; Tue, 21 Jul 2026 04:47:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpxchg.org; s=google; t=1784634454; x=1785239254; 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=YoIW5uJnX3Jm2AAYIiYFvjSsneOztfm3z4wi+PXAoGw=; b=ATWflK16AhbQIx2+r7AxHOehU2e/eEyRjw56+EAIaFkyOXQ0YvqkDvb5BzvSXm1PdT 2p4PJQiTR3mtW4QHMDVV2jZBE0yTpSNA74dRxVtJAAC4cRDlrMxscosgZs2CP/DNdN5R U0LnWWCQPYvissSBPHYRSw2ESAJ/J/YeV9gZ6z0HawzGdKulfq8UYycArfg4R4MhJfHo s4aA+LRjAJQTC/v/fpU/ef303wBpUuo/ydFDvs7+UXKp9BdoA3dz1LGwlen9xMlgQrd4 gz/fdOTV358v8cO4y9BwE27Sirv5oFMNidbzP2VWEwa3aEhF54mN4AZlE5Blesnwu2hb p5wA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784634454; x=1785239254; 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=YoIW5uJnX3Jm2AAYIiYFvjSsneOztfm3z4wi+PXAoGw=; b=AxPWJKxxCEbhw01kWtEivmQ9nN6vjpzXck4MeetkWt+zznQqVg3n5pz6lSe1DsK10L 98lIm5gX0379OlnZCxo+gyKNStVCl34Mup8MKSkg8J4SIXM1F3xd3j2e/ki49tp/tscb sR7TRKbdOwcPasN8JToLZc+W0HsZxLcK53Re01gO+wbQxgncrUt5sAQ9sPkDaF6p1ZCt n9sdmk55XQPS+LW5po3eaLegCjlMxidWpjlwJcfyTYrkhNuehIB1HP5elEsBTItUSMrO 00OuLmGyoaJrGH3nJMuZbUfeJvsq1d76K4N5ftO3ctptEDHA6J18dvY3LfsBKVvjXy5e INhg== X-Forwarded-Encrypted: i=1; AHgh+RrHjixAulAVQfesCyYvu3r2oQMbAbuX1p/wB3BemTQGkxrqSleZkJJfAn1vfeFqOaXryNKhxmkMJK3yLqM=@vger.kernel.org X-Gm-Message-State: AOJu0YxZKe+BZWu/sCFvqPpson8tMy5eCalY/RdmKCyaJjAq5SqhWcyz lY5NUbzANwSzh9oWrCtHbJH1/Em4a5sw66W2kyUDA4mvgXVyifG9UDznseNnuxgjlcE= X-Gm-Gg: AR+sD13yvsEa4LeR74ZGvFj8acDXMdcd7R9JQtqLQnmVX8O1dv32ljev83AJg0RrKix 8pe3GSzEtkP9AfNrnY2ZFGoWiDp1bkdvxukz3lY4YmEODtsffa2r7wHn7qn7Vpci3GoEcOCMrKM uFYDkPfabTY7W+JSgpSmg8B+V8HHnNHzJyMbQcsUHFy/P1P6cBECNksttg/Mfkkm1V+Z/OsQOr5 hSGSmQ7KaV29ojDZh0U7VmJnON431foiKsswjMW+utEsHi2P4Kf9Yt4i/mkAI05qQ5p++/5ljjY w3D3t7gtqimc9uwhH4/vkaKeBD7j/zxo25GnK5qQFTMayCUCKj06wt5/8yWl5ev+9g2t6npNjpB n2OUlJXkGo+6ycncrEaqC1eutSvpW6Dsj9EFgvVwjG0m5NLl1Eq9WppEm189TYeCotBAz0iHMz0 Hv X-Received: by 2002:a05:6214:3a8c:b0:907:7635:44c with SMTP id 6a1803df08f44-9077850a1demr207255106d6.63.1784634454505; Tue, 21 Jul 2026 04:47:34 -0700 (PDT) Received: from localhost ([2603:7001:f100:500:365a:60ff:fe62:ff29]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-9077853f481sm118204966d6.2.2026.07.21.04.47.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Jul 2026 04:47:33 -0700 (PDT) Date: Tue, 21 Jul 2026 07:47:30 -0400 From: Johannes Weiner To: Alexandre Ghiti Cc: Yosry Ahmed , Nhat Pham , 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: <20260718093723.153324-2-alex@ghiti.fr> On Sat, Jul 18, 2026 at 11:36:39AM +0200, Alexandre Ghiti 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)) > + goto out; > + > + /* Raced: the folio is now owned by the swapin; put it back on the LRU. */ > + folio_add_lru(folio); > +out: > + folio_unlock(folio); > + folio_put(folio); > +} Is this actually zswap-specific or should it be just swap code? Both this function and the dropbehind queue in the next patch seem like they could be reused if we wanted to make the generic swapout path do dropbehind as well. It looks odd in the next patch to have a generic swapcache && dropbehind check and then call zswap code.