Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp10690047pxu; Wed, 30 Dec 2020 09:00:47 -0800 (PST) X-Google-Smtp-Source: ABdhPJyeOSq8PXn4g7IV1a5Zp6vvlfGARwU0AtZPs9GOKz0GT+rwKxEBz+pFMFLoEAgeEqlurar2 X-Received: by 2002:a17:906:b56:: with SMTP id v22mr50051172ejg.145.1609347647373; Wed, 30 Dec 2020 09:00:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1609347647; cv=none; d=google.com; s=arc-20160816; b=SOr35RNGwxEN38WPFFExrFbqtUBI+L0oI9mPVeTgWYB7b/hCf53MFqlPqAaKiiItZ9 yAWD6aOy0atNLm87vem8zLn18Zhjb2fb90n6Id+GjJcUwuNlNCOqYUM/VmJQcpTNTMih ASNfVGX5yA3pySS7A7NJxb+ltWwX90cNz+dfiE9FA9aH0R+uIISWQN/4VPnS+fNtK0oz LbT4sPhfAkb/pBcHtAJceBe9B8Bo4kRjAWZ+1Bo8sUfncEHhCO6/AVVuKTghBwReFdzD uAww8OQCyjjHIpvvJFVFj3cZkaD4XjDFOaZ8nkZNzmxNWjtoU0mlzebxaIxu2gMkEsJF FNnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=v0sU2PS65mj6SIrXlmE65a3nWxWuLWZagUw5I4XcO9E=; b=HumtxwzySCtXZpCoFeMxZ1zdQ/ATBNPfPwr9Vj1egPU84DHzEvrLL573xFpFch41Rm XT0Ci5SDE8WOAiScfNmlikr4MAcdkyRACPr4ED3hf8omu2vrIveFaRqHBT9gcXvK78vM BQzdde2bT1TRsVS/Nr9B9Qa8GcWbVPYIzpmIpvzujC+pzWqql6nzBMqsl6znm7A2gQbg p6wcAoP3Rfaupxb43t8LcI0TeP9pkX9W4lQ0ElQL2eQC4Jkdtd/qljYB1vhjMruogNLI HGEA/QP2tsCbQcpBoSfKAsCjMv1HIRU7tRnwn1LooAHRkXD8P0IR0f4m2yDv1AQyBXfH i05w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id jg19si20885071ejc.365.2020.12.30.09.00.23; Wed, 30 Dec 2020 09:00:47 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726656AbgL3Q7e (ORCPT + 99 others); Wed, 30 Dec 2020 11:59:34 -0500 Received: from mail.cn.fujitsu.com ([183.91.158.132]:10914 "EHLO heian.cn.fujitsu.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726214AbgL3Q7e (ORCPT ); Wed, 30 Dec 2020 11:59:34 -0500 X-IronPort-AV: E=Sophos;i="5.78,461,1599494400"; d="scan'208";a="103085829" Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 31 Dec 2020 00:58:39 +0800 Received: from G08CNEXMBPEKD06.g08.fujitsu.local (unknown [10.167.33.206]) by cn.fujitsu.com (Postfix) with ESMTP id 0FEBE4CE601C; Thu, 31 Dec 2020 00:58:34 +0800 (CST) Received: from G08CNEXCHPEKD04.g08.fujitsu.local (10.167.33.200) by G08CNEXMBPEKD06.g08.fujitsu.local (10.167.33.206) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 31 Dec 2020 00:58:34 +0800 Received: from irides.mr (10.167.225.141) by G08CNEXCHPEKD04.g08.fujitsu.local (10.167.33.209) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 31 Dec 2020 00:58:33 +0800 From: Shiyang Ruan To: , , , CC: , , , , , , , , , Subject: [PATCH 01/10] pagemap: Introduce ->memory_failure() Date: Thu, 31 Dec 2020 00:55:52 +0800 Message-ID: <20201230165601.845024-2-ruansy.fnst@cn.fujitsu.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201230165601.845024-1-ruansy.fnst@cn.fujitsu.com> References: <20201230165601.845024-1-ruansy.fnst@cn.fujitsu.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-yoursite-MailScanner-ID: 0FEBE4CE601C.A1747 X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: ruansy.fnst@cn.fujitsu.com X-Spam-Status: No Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When memory-failure occurs, we call this function which is implemented by each kind of devices. For the fsdax case, pmem device driver implements it. Pmem device driver will find out the block device where the error page locates in, and try to get the filesystem on this block device. And finally call filesystem handler to deal with the error. The filesystem will try to recover the corrupted data if possiable. Signed-off-by: Shiyang Ruan --- include/linux/memremap.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/linux/memremap.h b/include/linux/memremap.h index 79c49e7f5c30..0bcf2b1e20bd 100644 --- a/include/linux/memremap.h +++ b/include/linux/memremap.h @@ -87,6 +87,14 @@ struct dev_pagemap_ops { * the page back to a CPU accessible page. */ vm_fault_t (*migrate_to_ram)(struct vm_fault *vmf); + + /* + * Handle the memory failure happens on one page. Notify the processes + * who are using this page, and try to recover the data on this page + * if necessary. + */ + int (*memory_failure)(struct dev_pagemap *pgmap, unsigned long pfn, + int flags); }; #define PGMAP_ALTMAP_VALID (1 << 0) -- 2.29.2