From nobody Sat Apr 18 10:54:42 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5AAEBCCA480 for ; Thu, 14 Jul 2022 10:34:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238419AbiGNKet (ORCPT ); Thu, 14 Jul 2022 06:34:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43722 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238393AbiGNKel (ORCPT ); Thu, 14 Jul 2022 06:34:41 -0400 Received: from esa6.fujitsucc.c3s2.iphmx.com (esa6.fujitsucc.c3s2.iphmx.com [68.232.159.83]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A6ED74BD31; Thu, 14 Jul 2022 03:34:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1657794878; x=1689330878; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=AL+n3rpchvxeHAWcuSYVma9eU5v5v5BPE5FiFPQHoIU=; b=L3WMTyIaRyoTdEbb1g7VqxVk++kNEmX0hldqQTXgOI7Cv3PkjjOE7kdd TgQfUofVFP7IE7iTrF5P050R11Is8D3lW8b+Aog9NiqkTwAbjmJTVi/d5 VqdHonFmNYo/9xHNy8P2UeABn0Ba4z7Wc/eIelvOfN9XZeeG9oHd86GA3 DZ+/i2zZ0KvPGfNrRV7jCmvl0wnxOAunjzBNSnW9MCyVaANZ580pU+6Mf GxcUiuj+bKeRqdaJRVd5ntv9GVrzgvlnf8fXKU9z1OXXLQpey2y6+xsa9 RBZLm1kcmDYv93q5NXxnTbSk8l7Ktzn3gs2Ol+Heex+Qir53Wfqimdpx1 g==; X-IronPort-AV: E=McAfee;i="6400,9594,10407"; a="60417266" X-IronPort-AV: E=Sophos;i="5.92,271,1650898800"; d="scan'208";a="60417266" Received: from mail-tycjpn01lp2169.outbound.protection.outlook.com (HELO JPN01-TYC-obe.outbound.protection.outlook.com) ([104.47.23.169]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Jul 2022 19:34:32 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FjUFhrpCqarok3ie7/+fD7Vo6opIEFTIZf56oTn3cFUmySm7Zl03B7OgnXmy5NoSRdaswX6OJ4TY4OszHxTncueq+RgLU19SiTpEBXYltNgQOZHMT7ZQFci4nuNkMEd5fQsQSL3f4/i3OxPjpy4q0uBaqgGv8Ge5+kN7zwzmvRdw2SnX1iVRCmIqpMhFbVa1/LEjW5zleOinz7n/hLF5H4MThfe2X86STkzb1XZc6SC3l7qWKJ2wQFmUIxegh29AHJb36T1Nx0dpwoIZEZRJXZdoCghZLLp0Q6Qi0zkeTeZEP9dAHn7IPKHcb8jMhnFm/1QgePHs0jR+Q0GNhhCrwQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=AL+n3rpchvxeHAWcuSYVma9eU5v5v5BPE5FiFPQHoIU=; b=dxWP6uxOt29RUZn+tu2l3j+DysWUqoUz5yQXsTUVW568Q+ekgsP2stn7SgcwLdtXTo17JQ5NbCan1A7NooMQQGRDy1ryJN0obLg/8KVt2sH2ANyvaQPz2Z5wvyGx7U8jjSQF6+1cUygEGgzlaN5SxR/jhygafoGLI8xnrNHdaRd+7za2oj9GRL8Az9jv6tZOLMBCj9fx0lk2okI9iGhdne1HNFYzNj69SHiXiUdwTSCleNsGUqnXzbsWe/HG6ZL2/NVQ14u98VZVbsQphb7tKoIM5iymfRC09XpjVmaKxP4Kpvu/4EmYZihVxhOuhQm3PbHQ2AinGF4UgARVVLEurA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.onmicrosoft.com; s=selector2-fujitsu-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AL+n3rpchvxeHAWcuSYVma9eU5v5v5BPE5FiFPQHoIU=; b=Qe8S/WS5o3Fb/9HkduE1qYOxTHisUXiLlYcAeJ8fFhj/WM6pXG1mb+EZcS9i45TBjbsK+noECuocEj6LYrx6AEOscTrrWTmEsCMYWhSpM2fTV+L6ijn6EZGPwhV//LbYtBHLdpL+p4icvtyBpkqvj9j3p+Ljb4W+be4zAFFr2iA= Received: from OSBPR01MB2920.jpnprd01.prod.outlook.com (2603:1096:604:18::16) by OS3PR01MB5685.jpnprd01.prod.outlook.com (2603:1096:604:c2::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.20; Thu, 14 Jul 2022 10:34:29 +0000 Received: from OSBPR01MB2920.jpnprd01.prod.outlook.com ([fe80::ece2:4ee0:93a4:ce47]) by OSBPR01MB2920.jpnprd01.prod.outlook.com ([fe80::ece2:4ee0:93a4:ce47%7]) with mapi id 15.20.5417.026; Thu, 14 Jul 2022 10:34:29 +0000 From: "ruansy.fnst@fujitsu.com" To: "linux-kernel@vger.kernel.org" , "linux-xfs@vger.kernel.org" , "nvdimm@lists.linux.dev" , "linux-mm@kvack.org" , "linux-fsdevel@vger.kernel.org" CC: "djwong@kernel.org" , "dan.j.williams@intel.com" , "david@fromorbit.com" , "hch@infradead.org" , "jane.chu@oracle.com" Subject: [RFC PATCH v6] mm, pmem, xfs: Introduce MF_MEM_REMOVE for unbind Thread-Topic: [RFC PATCH v6] mm, pmem, xfs: Introduce MF_MEM_REMOVE for unbind Thread-Index: AQHYl21MSZyYmdiLqka88bTs8k0Skg== Date: Thu, 14 Jul 2022 10:34:29 +0000 Message-ID: <20220714103421.1988696-1-ruansy.fnst@fujitsu.com> References: <20220410171623.3788004-1-ruansy.fnst@fujitsu.com> In-Reply-To: <20220410171623.3788004-1-ruansy.fnst@fujitsu.com> Accept-Language: en-US, zh-CN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.37.0 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: de819951-3121-4655-86c7-08da65846ee8 x-ms-traffictypediagnostic: OS3PR01MB5685:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: QRmZNgku170Y7u2dqsntP+u4RY/lCvWSdExR3U25yfupzjunPl2h1fCxMTnCllHPRZzZQjMH+r2zkzoKntqfmEXtN5JcAd9zj1ZknZqlAlZs3z/ppORRUWMAmhiIKkAhX4wEw1AiHfrTCu5o5od+HFmdXRvvBtbN1sdrKhol2wFMyU4jX0tOFpWWp2c40PJaXqf0FEDLH9XUD4uk5KFaChUoRCASn9jibAD/RApltLCACfSC/iC1hRCbi80V4nIVkbIdTKuodQ8CepBin9/uUjFy4m5LcE0H56LHbMjFoYlfs0KWkmc+0olzPlVzVdyS6ZHovHafYI/NGJK4zdBwZ1wLYATMH0/XRL3znfRTrqIGsZ7sRBrdhsEYghQ+D0FTgSo/da7ceJbqURzo2PidQgR7Ef6Bf2ohYbtRBW9PtwbZ62TZfMUFMadNWC0mloHFo9l6qachvTOtybI2ZdYKD/jxMU2y1fl2nQp27SIjbbVNsYiXTdwCDolPau/HPrQhDfXstw/lrNZqYtACtyofhfa8aPYIggNbinfRGgTmL/Oc7uMjznxGvBRt4KS3hxtGdWmujgxoi3ejwQPsadFrfLMLEHi95NhkFezXmb4l8vTxLmFwrFxp4N2ODBSyydskAP8uKoBk9ken4twfnrdoV0/u6LfVLiarsmHu9r/3YeSqSa7t9nqH0Vi7sZt5O6ofNbtkQAm3D+H3oVuIA+vaMbkBHHIW10VyudKjXAMzmFyThytaencIdn7iuBqR72/OH/zmfeEgNEdagmzZsL1kzXD9dIfMzq3TIeRkO0DnvzFk2G4IpjlqPhsKYGTnGK/IKpexoa5lItx47B4884F7RBgfYIWgm1KfIHZqiUJYJIo= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OSBPR01MB2920.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(346002)(39860400002)(136003)(396003)(366004)(376002)(66446008)(1076003)(66946007)(4326008)(66556008)(8676002)(66476007)(91956017)(6512007)(83380400001)(36756003)(2906002)(5660300002)(186003)(85182001)(76116006)(7416002)(8936002)(64756008)(26005)(71200400001)(54906003)(110136005)(86362001)(82960400001)(478600001)(38070700005)(966005)(316002)(6506007)(41300700001)(6486002)(2616005)(38100700002)(122000001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?gb2312?B?TXVTZXBsZjhKZnp6bHAvV1hJbDhqV2d4OCtWb3Q3a3hlUzRiUjZjbTUwODhp?= =?gb2312?B?LzVyOGtBTjZZRnpqeHhmTFJMZWRPdDBVRk4zREVsd2VwTnIvaVZDbTdkN2tP?= =?gb2312?B?czNPSktWeTNDbTNFckZvWTBVU1pyUVRacGhQN2tsZFRjOFYwanFNMngzdVI2?= =?gb2312?B?aS9MQmcxclVsNjhSYWM5UndZdGJrM3NaNXBJM3ZteTVxVlFUMGgyVnIvU3dC?= =?gb2312?B?NldTMHQ0b2ttWWZZL1Z2T3U0NW1NM2RXZ0orS0FqZzhNcmxaLzFtQzJFWnVu?= =?gb2312?B?UzNxT2RUQ0UvTUdmMU5valN0Ym1mNHlwOFlWM1k5Q3NRU0s4akwxbHBBS2pj?= =?gb2312?B?cjBxR1Y0b0RQQmRWZ01JQjE2MlE1aysrTkpKTXE4MVNrM3p6aUxEVFhzK2ZD?= =?gb2312?B?VStYODNjVkx1L2RiKzNYbVFpUFNVRmFZTVRVR1FpK2dKdnBMTHRWeEF3ZFNh?= =?gb2312?B?NzYwUmxqdStvcndEUHJhK2pIVlJZQkZ0Y3hOWE8zNnhicjY2VEEwWHN4aFJM?= =?gb2312?B?czA1Y1hVbjQ1TU1rMDVYMVVZQVJzUkV3NHRGaDYwcDZ5bTY5ZGt4YnYvUWJV?= =?gb2312?B?MEk1dFcyajZSL0pLYXMrcXQySHZjcUh2Tjh5Q2REejVmeXhPcTNDR21xQ0pm?= =?gb2312?B?Z2gvcStUL1hhZTZZMXU2MjNtZG5URys2a3IrZUZHeHFHUXpmVFlWR2d5ZzRa?= =?gb2312?B?YzdSTXoxVXEzSFQ0T2Jza1kraHRqUGk5aUx3elJVNU9XWHk2Z0VSYVo5bWRZ?= =?gb2312?B?MTYrUnpRY25mMlZBM3F1dzVqZlVZdTVKWlhEZzZlbVpYOWhjb3pER3EvaTlo?= =?gb2312?B?S2d6R2VqQ2x3Wnl6RjNqdUs3blc1VzMxN0VIVWNMR3lVNDRVN2xqTFUxR0Fa?= =?gb2312?B?NzhkZkhaeXBQa0Z4M0pFNldlajNueE1VZGo2TUF6LzQvZFNsNTl3NVNhM3VN?= =?gb2312?B?VDB6Ymc1cVM0NXBQSUV5UENaT2k4K2RKQ2NLMlVveFBna3FvQXczUGRLcmRW?= =?gb2312?B?cmNWOUQ4Rkk2OVpKTHZYWlpNVDVXNW05Z0pmbkhWTWlZTkV3VGh6Wkc3N0tB?= =?gb2312?B?KzhrTHB2VFo0TllxaFpoeFlrVko2YmxOczJkZkJYRU9VU1Yya29oUlhDY0o2?= =?gb2312?B?SzIxSjJHK2puWDA1eG9xRCtCSWVHZmVJcWF2WmFxWnljNUNHUUtHd2h4aEg1?= =?gb2312?B?YjNiK3FWZHVtZzltUDQzNHY3SHR1QVhrOXJBT0pPdk43b1FtYjhqRS9VZHZn?= =?gb2312?B?VllTRk5SSVJNNHR5dmx6SmY5QzF4Z0Y2R29kZ3lydjYzeU0wVG5iMVpjbVZR?= =?gb2312?B?OE5Cd21lTys0TDdNREFZMmlCSlRDMS92MkZVMjd6cUlGZVB0OHh1ZVRUOFlI?= =?gb2312?B?ZEs2YmpNZ2RLd0U0My91Q29GN0hvd2Z0L1ROVERYVndlWkUwdUVkYVZ3MGhL?= =?gb2312?B?NllNdEYyWjRrUXdPRCtDK096QTEzTHoxemNtdVI2Y0hvc3RUR3R6N1M1d2l5?= =?gb2312?B?VC9LVk90RitaQXZVWlNDWG05ajFZKy9MdXAwUEo3UTl0R1BIVytjNldNdUVp?= =?gb2312?B?NVZkUEh6dHZBNG1HWnJyeHAyYmU1VUZEZXAyeDVBSXJYclYwWllyNVF2YVB0?= =?gb2312?B?NkRZS1pyNkpId1V5L3NYUDhkNjhOYUlNNnhSQVpSbThJSGpzOTZXanZDZVFh?= =?gb2312?B?djFwWlFJeVlnZytFUmZsVjhzWHUzZFZTdTZCSFZsMWs2THFNclNsR296VEts?= =?gb2312?B?WEt2RkJqNVFaUUJGSWxZcTZob3JyUGJmQTJKTkNQUGtvZ3cyMzMwRVdKcXdS?= =?gb2312?B?RFl2NUlPbXUxVlFmZGRMSS9DWCtTcVRnbVp3M0J0cDZQNWJCcktCcldNYlVH?= =?gb2312?B?aWhiOWxobzBucFlYUTNuRnd3RDZURkthUjJUNXBPTnB4QlMwTGNuRE1aaEVO?= =?gb2312?B?VWtyQUVEbEQrWjF1K0JOakE2Q0dVWUUxaGN0S215VW5hVWNmVnFneXEzUFVu?= =?gb2312?B?QllVajJNaVlnaFl2QWJCY25tRGQ2QU84bzdsZGdEOVpUT1NyVExDSTdpY3pN?= =?gb2312?B?Zi95eENiVXNwWE5IbnB3SGcvaCtiSmJpbncrQUV3MVAxbm5zYzd1N25tSGxH?= =?gb2312?B?MGxjaTVGaUYyOElTNTVBVE5pYmVaMWJTaHM0bUgrVGJJOXVPNGQ5Z0dIMDJP?= =?gb2312?B?dVE9PQ==?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OSBPR01MB2920.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: de819951-3121-4655-86c7-08da65846ee8 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Jul 2022 10:34:29.6542 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 0Th+v/LRBfwuyWvqBebMp4QnqeCgGkhWgcYYjFDUpHi05+7kznkeCeXyxdTIsZ+4pGWH2gQACTrXK9K+tFrfiQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS3PR01MB5685 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" This patch is inspired by Dan's "mm, dax, pmem: Introduce dev_pagemap_failure()"[1]. With the help of dax_holder and ->notify_failure() mechanism, the pmem driver is able to ask filesystem (or mapped device) on it to unmap all files in use and notify processes who are using those files. Call trace: trigger unbind -> unbind_store() -> ... (skip) -> devres_release_all() # was pmem driver ->remove() in v1 -> kill_dax() -> dax_holder_notify_failure(dax_dev, 0, U64_MAX, MF_MEM_PRE_REMOVE) -> xfs_dax_notify_failure() Introduce MF_MEM_PRE_REMOVE to let filesystem know this is a remove event. So do not shutdown filesystem directly if something not supported, or if failure range includes metadata area. Make sure all files and processes are handled correctly. =3D=3D Changes since v5: 1. Renamed MF_MEM_REMOVE to MF_MEM_PRE_REMOVE 2. hold s_umount before sync_filesystem() 3. move sync_filesystem() after SB_BORN check 4. Rebased on next-20220714 Changes since v4: 1. sync_filesystem() at the beginning when MF_MEM_REMOVE 2. Rebased on next-20220706 [1]: https://lore.kernel.org/linux-mm/161604050314.1463742.1415166514003579= 5571.stgit@dwillia2-desk3.amr.corp.intel.com/ Signed-off-by: Shiyang Ruan Reviewed-by: Darrick J. Wong --- drivers/dax/super.c | 3 ++- fs/xfs/xfs_notify_failure.c | 15 +++++++++++++++ include/linux/mm.h | 1 + 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/drivers/dax/super.c b/drivers/dax/super.c index 9b5e2a5eb0ae..cf9a64563fbe 100644 --- a/drivers/dax/super.c +++ b/drivers/dax/super.c @@ -323,7 +323,8 @@ void kill_dax(struct dax_device *dax_dev) return; =20 if (dax_dev->holder_data !=3D NULL) - dax_holder_notify_failure(dax_dev, 0, U64_MAX, 0); + dax_holder_notify_failure(dax_dev, 0, U64_MAX, + MF_MEM_PRE_REMOVE); =20 clear_bit(DAXDEV_ALIVE, &dax_dev->flags); synchronize_srcu(&dax_srcu); diff --git a/fs/xfs/xfs_notify_failure.c b/fs/xfs/xfs_notify_failure.c index 69d9c83ea4b2..6da6747435eb 100644 --- a/fs/xfs/xfs_notify_failure.c +++ b/fs/xfs/xfs_notify_failure.c @@ -76,6 +76,9 @@ xfs_dax_failure_fn( =20 if (XFS_RMAP_NON_INODE_OWNER(rec->rm_owner) || (rec->rm_flags & (XFS_RMAP_ATTR_FORK | XFS_RMAP_BMBT_BLOCK))) { + /* Do not shutdown so early when device is to be removed */ + if (notify->mf_flags & MF_MEM_PRE_REMOVE) + return 0; xfs_force_shutdown(mp, SHUTDOWN_CORRUPT_ONDISK); return -EFSCORRUPTED; } @@ -174,12 +177,22 @@ xfs_dax_notify_failure( struct xfs_mount *mp =3D dax_holder(dax_dev); u64 ddev_start; u64 ddev_end; + int error; =20 if (!(mp->m_sb.sb_flags & SB_BORN)) { xfs_warn(mp, "filesystem is not ready for notify_failure()!"); return -EIO; } =20 + if (mf_flags & MF_MEM_PRE_REMOVE) { + xfs_info(mp, "device is about to be removed!"); + down_write(&mp->m_super->s_umount); + error =3D sync_filesystem(mp->m_super); + up_write(&mp->m_super->s_umount); + if (error) + return error; + } + if (mp->m_rtdev_targp && mp->m_rtdev_targp->bt_daxdev =3D=3D dax_dev) { xfs_warn(mp, "notify_failure() not supported on realtime device!"); @@ -188,6 +201,8 @@ xfs_dax_notify_failure( =20 if (mp->m_logdev_targp && mp->m_logdev_targp->bt_daxdev =3D=3D dax_dev && mp->m_logdev_targp !=3D mp->m_ddev_targp) { + if (mf_flags & MF_MEM_PRE_REMOVE) + return 0; xfs_err(mp, "ondisk log corrupt, shutting down fs!"); xfs_force_shutdown(mp, SHUTDOWN_CORRUPT_ONDISK); return -EFSCORRUPTED; diff --git a/include/linux/mm.h b/include/linux/mm.h index 4287bec50c28..2ddfb76c8a83 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3188,6 +3188,7 @@ enum mf_flags { MF_SOFT_OFFLINE =3D 1 << 3, MF_UNPOISON =3D 1 << 4, MF_SW_SIMULATED =3D 1 << 5, + MF_MEM_PRE_REMOVE =3D 1 << 6, }; int mf_dax_kill_procs(struct address_space *mapping, pgoff_t index, unsigned long count, int mf_flags); --=20 2.37.0