From patchwork Thu Feb 9 12:31:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kara X-Patchwork-Id: 13134477 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 94004C61DA4 for ; Thu, 9 Feb 2023 12:32:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4FD6B6B0074; Thu, 9 Feb 2023 07:32:13 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 36BDD6B0080; Thu, 9 Feb 2023 07:32:13 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0FBFE6B0074; Thu, 9 Feb 2023 07:32:13 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id C221F6B0071 for ; Thu, 9 Feb 2023 07:32:12 -0500 (EST) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 85B06120CEF for ; Thu, 9 Feb 2023 12:32:12 +0000 (UTC) X-FDA: 80447690904.24.DAD8FE3 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by imf16.hostedemail.com (Postfix) with ESMTP id 73B0A18001D for ; Thu, 9 Feb 2023 12:32:10 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=UnoKA55D; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=+UQmLWz5; spf=pass (imf16.hostedemail.com: domain of jack@suse.cz designates 195.135.220.29 as permitted sender) smtp.mailfrom=jack@suse.cz; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1675945930; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=QhZwB9U7b83UUjuf0FerFqngTCr+3tOZyqFA7jbxxWw=; b=AfpDFJm4+auguUXiws+2SVY+Guj5X/sXy0iwSbG0yD3VyLaUoWo/7f8zSkT+rYMjTZSUT/ luiUxzWxt2nYR2aebdyTG1LkH8eH3Nz0jbJ0fCeomf7aTcqzjcpHb/BTwjnrbZeI9OiIAY Lm1vDdIgTi0Mo/Fy8siHq5PrvCWHyWg= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=UnoKA55D; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=+UQmLWz5; spf=pass (imf16.hostedemail.com: domain of jack@suse.cz designates 195.135.220.29 as permitted sender) smtp.mailfrom=jack@suse.cz; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1675945930; a=rsa-sha256; cv=none; b=vWz/lnxKcDqFYYkg7nIot1oGhEzyfnhE8EUM1i1LgCwTKtB/ISDJWmQsY1qq3iRs32eFg2 +Ku5rmCx7CbyIfo4ZY1GKQYKH3IeKeOpVU6S/NF3x+wcqr2KK2zHE7k39PVpzNkFiKC/1W /Zs0BsW9em4EC8R9oBWi//+R1G0Eiv8= Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id A9A635CD3D; Thu, 9 Feb 2023 12:32:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1675945928; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=QhZwB9U7b83UUjuf0FerFqngTCr+3tOZyqFA7jbxxWw=; b=UnoKA55DZCyI92tzkqVVWvljTVeb8GzneLp9fZD9LtZE7vFAo1oMrWiJl3sP5afaKNU5CZ gY3bcZSIrYa3b03Fg3NzT6MDXsH+19pHDzF4wTrRsrEHAkcfVmpc9/EvtJCkmognu1MAzU K/7YL9t8uyYZiLRBm/oobi1cf5ULHp8= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1675945928; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=QhZwB9U7b83UUjuf0FerFqngTCr+3tOZyqFA7jbxxWw=; b=+UQmLWz5ID5aDnNFR4jFhyRmnHsPbR20qhz7V0/3UaMFWYEeECOhTH4zInmI3Q1AHyriO7 n0Gb+RNdOXpe8lBw== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 9CFF5138E4; Thu, 9 Feb 2023 12:32:08 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id nLtNJsjn5GO0WQAAMHmgww (envelope-from ); Thu, 09 Feb 2023 12:32:08 +0000 Received: by quack3.suse.cz (Postfix, from userid 1000) id 7C450A06D8; Thu, 9 Feb 2023 13:32:06 +0100 (CET) From: Jan Kara To: Cc: , , John Hubbard , David Howells , David Hildenbrand , Jan Kara Subject: [PATCH RFC 0/5] Writeback handling of pinned pages Date: Thu, 9 Feb 2023 13:31:52 +0100 Message-Id: <20230209121046.25360-1-jack@suse.cz> X-Mailer: git-send-email 2.35.3 MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1498; i=jack@suse.cz; h=from:subject:message-id; bh=FD3tsBd7xXXbKwex9PrXtOhdF1jN0T1qyzMIxfFavdQ=; b=owEBbQGS/pANAwAIAZydqgc/ZEDZAcsmYgBj5Oel8IdyTOxSydblEscUFigdfJgN2ZSU6/K9BJ/M aLxM1kOJATMEAAEIAB0WIQSrWdEr1p4yirVVKBycnaoHP2RA2QUCY+TnpQAKCRCcnaoHP2RA2fkAB/ 9sFUyN6fP03NQoam23qygpwii0em4S3TLu6xQFTSdcVVp78Esl2J4L1nVJbDc8cGIGBPTEErYPKbpj CXaqS8674vvwxZJEVkt9dLj8FNxKysfsMdQ91LmrwHjY7iEhLa8Rmz+uArXkgxNyqGrxbVRogOhWWg PmfMUGRLdCKcxiAcGJxfBziAVEpe9gafTcokar3q3cnaImh3NSezpM/dLzpRVVgoFIDiUIzQbPxF1X eXH/CGXkog0wW4BNg6vpq39Y6jpVJ7aQ+7MzPjzrbL/Vpy3j3JnhVbJiohtNrrTVIbs/yrBYolGyuN fDV7rJAu4sdkpS4u3MNdA+qKK7gSZb X-Developer-Key: i=jack@suse.cz; a=openpgp; fpr=93C6099A142276A28BBE35D815BC833443038D8C X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 73B0A18001D X-Stat-Signature: jdf7trkjtcyojay1cynda1egt56dpt39 X-HE-Tag: 1675945930-352500 X-HE-Meta: U2FsdGVkX18AOAtS0rgQJwHuqdi5X2xybOfKI/wJu8bjO7nob+apDaKtnrT+noPNHZ++qGXz9OOLIwoq4wpOr8bzk0Eg4FZs175vzdQtDyNPuM78+tsuldw2/lM6XpZzHtAwvjXGC5r1jmkzWiwichNExZEjynVSLtjOhiG0c1VixgpKKVCrdv2GcOEmDE/9c3n4IM1q8UesdO8eeJTRz44TIt1XzwkYvm5ybz7gHByJlWVuOAHKatT8BK+ksZNJNfgGmSTJTg1Fa/oNuy/zzfzVptUc8d1ilbSrY9XJ2Ljv3VHeU4YhhonrSgs1DZUezxUha6S74P/N8d/uCM1A8420hN2S7o2FBAAM/rkAMhTkKQEUdz2SkgwLhdfG4Kq4w06HrJfy/54dINCmnau466rw3xZSeq03h79EQhP6XcJFtZRq3tHsjtFx8uLmIU44hEJLTuJuQuzo6UsQvz/crtFq2rii6IVR6hmd1+X9cHIi0j6PUTfawdS7CNB6+9P6oa9xBzU4q+zoXepd0DC3QOXvkJSpVXrDokUb44jjIC/x0VDzcapVikq4vLnx7CsIiRpWDgDCXKakL0ZyzJwO9Ii6OYgNMlc6vZJOs+XmdbICr8HBSOR4EDWS/y0Tn5498H8EmCQ78605QLXHgtPDsWDgEs6suJ8CIPjebjTW3tPXulVnM69XzlZCnWxDKaXS39T3m7AWX1qSABtUsEoOQT+2xUXqGA7fMJRz7lf3pLhgWUEVAbput/4ZC7k0WWYA/uzyPs6xmf9Fw8o8HP8dnr2VAjAcGvdZhU3DOrKQtxWXilxPOkYZa4lqAJ5sqr8Woq6PbZcfDkvpn4QeQY2xeb9E1Gy0KJJCq8FDSLngJPREK0ZcimYi4Bfg4EF4FithZw+niGcxJKUz1rwb3bZ1TJW77Buhik3R6UHaEx0qAxm2rGb1TmFxOdk9mlqZEqYy1+xvpcX8WXH+ygVwSwM QBmIlSMT YWmIR2YTn3kfGrSdEMgzOeKbPW9ArchLK6o9rMRhzBs7jW6hKJryAdJbpVJkjy6y5Au13RUUgGVWXwf8EkzJHYPggIa1jmhdmj1ryCMMhzYbsjLF86SjgpgJz3GWB1glQ4ir7+oc+mGLDP24VFqMt6BkdZEnRWzkHbTWLtSipO3pPWwiqNlnN42jz0YWojbGvxQv8Eg2AkF58Zx3l1+87YeFIn5BTAc1PYhJw7ceT0jRH0P+VDsKd08JVNR3rEWUL7RFk 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: Hello, since we are slowly getting into a state where folios used as buffers for [R]DMA are detectable by folio_maybe_dma_pinned(), I figured it is time we also address the original problems filesystems had with these pages [1] - namely that page/folio private data can get reclaimed from the page while it is being written to by the DMA and also that page contents can be modified while the page is under writeback. This patch series is kind of an outline how the solution could look like (so far only compile tested). The first two patches deal with the reclaim of page private data for pinned pages. They are IMO no-brainers and actually deal with 99% of the observed issues so we might just separate them and merge them earlier. The remainder of the series deals with the concern that page contents can be modified while the page is being written back. What it implements is that instead we skip page cleaning writeback for pinned pages and if we cannot avoid writing the page (data integrity writeback), we bite the bullet and bounce the page. Note that the conversion of clear_page_dirty_for_io() (and its folio variant) is kind of rough and providing wbc to the function only in the obvious cases - that will need a bit more work but OTOH functionally passing NULL just retains the old behavior + WARNs if we actually see pinned page in the writeback path. Opinions? Honza [1] https://lore.kernel.org/linux-mm/20180103100430.GE4911@quack2.suse.cz