Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp3388346pxb; Mon, 25 Jan 2021 15:01:14 -0800 (PST) X-Google-Smtp-Source: ABdhPJyuR/4a4BW5Mnvip6clTTf6n4cZUBca/N69e0dCcxet5ihLBf7TZAgfZ6LRM6ILwcNOvB3v X-Received: by 2002:a17:906:7d88:: with SMTP id v8mr1714264ejo.416.1611615673917; Mon, 25 Jan 2021 15:01:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611615673; cv=none; d=google.com; s=arc-20160816; b=F5+yiwqwDhH9pCaSqrsE3DNP252wKh/IxnKzCi6El7gHZFZPDq/6yo3ry8NUkPsLX0 ScJpikQ96UhgBbmEgaCJhxT1+EaBpb20PbGeAw++BrU6uKRsNKXwjuGcpf1dNXEMXrHw 8EfeyqrX5F8DLmI8B8+4c64l/DZMzOoIcpUoCpKqBzVes1BkX8S7BdjMCeAMnaEgreGA rD9suvw9NJvPbZ1j74lf02VKoNQsVZLnxmbLEwz/qMWwSlWjkcwTg6HzoJP3jLSUA739 M7YqrWOeBw+b0udjjjh0Vl7LI9CHXpYxotcwsY/Fq62Mq7/wr3XjvCn3E2MnciLYXy9M 31UA== 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=DUL2MKUj0/ESBOwbvsBU+Y4ruUZ/zXWW17hhPU9vMLU=; b=Ght/H9Tn02GVzjxuJDYhci156XmqlR0Zp+BOTGkFGLZksCMnasOY6CMWcKm5PKkUD3 Vs2pR2oSgvJ2qesRQFCPHHJqIuhwqL518fxpiQM/piT+PsZHOBYEOxkN34IEjCNQeuk9 37YvM6kMbkGd1EHzBKUSXJvL+yZ+DJHW9/vxbDvrGe2MHqpowjZANlxI3Nq2M3lPsluQ Ti0LJ5oHcc7yoGQoREYzLX8A7cGcC6s++DzjIxhFclhh8fKDlBxwnfCTaKmhUSQNqpYI 0tMmME7w4n3DBxrjWvhTOeEubETE4hM2q7zuAhR1TajH3efDxLrZEyRIiYrhNDOv5YIN 9mMA== 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 s12si6352503ejz.50.2021.01.25.15.00.49; Mon, 25 Jan 2021 15:01:13 -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 S1732031AbhAYW5T (ORCPT + 99 others); Mon, 25 Jan 2021 17:57:19 -0500 Received: from mail.cn.fujitsu.com ([183.91.158.132]:13702 "EHLO heian.cn.fujitsu.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1732154AbhAYW4Z (ORCPT ); Mon, 25 Jan 2021 17:56:25 -0500 X-IronPort-AV: E=Sophos;i="5.79,374,1602518400"; d="scan'208";a="103820569" Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 26 Jan 2021 06:55:32 +0800 Received: from G08CNEXMBPEKD06.g08.fujitsu.local (unknown [10.167.33.206]) by cn.fujitsu.com (Postfix) with ESMTP id 455A54CE6782; Tue, 26 Jan 2021 06:55:32 +0800 (CST) Received: from G08CNEXJMPEKD02.g08.fujitsu.local (10.167.33.202) by G08CNEXMBPEKD06.g08.fujitsu.local (10.167.33.206) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 26 Jan 2021 06:55:32 +0800 Received: from G08CNEXCHPEKD04.g08.fujitsu.local (10.167.33.200) by G08CNEXJMPEKD02.g08.fujitsu.local (10.167.33.202) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 26 Jan 2021 06:55:30 +0800 Received: from irides.mr.mr.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; Tue, 26 Jan 2021 06:55:30 +0800 From: Shiyang Ruan To: , , , CC: , , , , , , , , , Subject: [PATCH v2 01/10] pagemap: Introduce ->memory_failure() Date: Tue, 26 Jan 2021 06:55:17 +0800 Message-ID: <20210125225526.1048877-2-ruansy.fnst@cn.fujitsu.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210125225526.1048877-1-ruansy.fnst@cn.fujitsu.com> References: <20210125225526.1048877-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: 455A54CE6782.AA1D2 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.30.0