From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0AFDEC4361B for ; Sun, 6 Dec 2020 22:55:28 +0000 (UTC) Received: from ml01.01.org (ml01.01.org [198.145.21.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A132E230FA for ; Sun, 6 Dec 2020 22:55:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A132E230FA Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=fromorbit.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-nvdimm-bounces@lists.01.org Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id E067A100EBBBD; Sun, 6 Dec 2020 14:55:26 -0800 (PST) Received-SPF: Pass (helo) identity=helo; client-ip=211.29.132.59; helo=mail108.syd.optusnet.com.au; envelope-from=david@fromorbit.com; receiver= Received: from mail108.syd.optusnet.com.au (mail108.syd.optusnet.com.au [211.29.132.59]) by ml01.01.org (Postfix) with ESMTP id 6CB1C100EBBAC for ; Sun, 6 Dec 2020 14:55:23 -0800 (PST) Received: from dread.disaster.area (pa49-179-6-140.pa.nsw.optusnet.com.au [49.179.6.140]) by mail108.syd.optusnet.com.au (Postfix) with ESMTPS id 6D9241AC2B8; Mon, 7 Dec 2020 09:55:19 +1100 (AEDT) Received: from dave by dread.disaster.area with local (Exim 4.92.3) (envelope-from ) id 1km2w2-001FXH-Ks; Mon, 07 Dec 2020 09:55:18 +1100 Date: Mon, 7 Dec 2020 09:55:18 +1100 From: Dave Chinner To: Ruan Shiyang Subject: Re: [RFC PATCH v2 0/6] fsdax: introduce fs query to support reflink Message-ID: <20201206225518.GJ3913616@dread.disaster.area> References: <20201123004116.2453-1-ruansy.fnst@cn.fujitsu.com> <20201129224723.GG2842436@dread.disaster.area> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Optus-CM-Score: 0 X-Optus-CM-Analysis: v=2.3 cv=F8MpiZpN c=1 sm=1 tr=0 cx=a_idp_d a=uDU3YIYVKEaHT0eX+MXYOQ==:117 a=uDU3YIYVKEaHT0eX+MXYOQ==:17 a=IkcTkHD0fZMA:10 a=zTNgK-yGK50A:10 a=7-415B0cAAAA:8 a=HHWehwv_o5C9Q5xAZY4A:9 a=QEXdDO2ut3YA:10 a=biEYGPWJfzWAr4FL6Ov7:22 Message-ID-Hash: UKAVHIEL6QJYRRXO5Y2PJF2AXOC5RZH3 X-Message-ID-Hash: UKAVHIEL6QJYRRXO5Y2PJF2AXOC5RZH3 X-MailFrom: david@fromorbit.com X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation CC: linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-nvdimm@lists.01.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-raid@vger.kernel.org, darrick.wong@oracle.com, hch@lst.de, song@kernel.org, rgoldwyn@suse.de, qi.fuli@fujitsu.com, y-goto@fujitsu.com X-Mailman-Version: 3.1.1 Precedence: list List-Id: "Linux-nvdimm developer list." Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gV2VkLCBEZWMgMDIsIDIwMjAgYXQgMDM6MTI6MjBQTSArMDgwMCwgUnVhbiBTaGl5YW5nIHdy b3RlOg0KPiBIaSBEYXZlLA0KPiANCj4gT24gMjAyMC8xMS8zMCDkuIrljYg2OjQ3LCBEYXZlIENo aW5uZXIgd3JvdGU6DQo+ID4gT24gTW9uLCBOb3YgMjMsIDIwMjAgYXQgMDg6NDE6MTBBTSArMDgw MCwgU2hpeWFuZyBSdWFuIHdyb3RlOg0KPiA+ID4gDQo+ID4gPiBUaGUgY2FsbCB0cmFjZSBpcyBs aWtlIHRoaXM6DQo+ID4gPiAgIG1lbW9yeV9mYWlsdXJlKCkNCj4gPiA+ICAgICBwZ21hcC0+b3Bz LT5tZW1vcnlfZmFpbHVyZSgpICAgPT4gcG1lbV9wZ21hcF9tZW1vcnlfZmFpbHVyZSgpDQo+ID4g PiAgICAgIGdlbmRpc2stPmZvcHMtPmJsb2NrX2xvc3QoKSAgID0+IHBtZW1fYmxvY2tfbG9zdCgp IG9yDQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZF9i bGtfYmxvY2tfbG9zdCgpDQo+ID4gPiAgICAgICBzYi0+c19vcHMtPnN0b3JhZ2VfbG9zdCgpICAg ID0+IHhmc19mc19zdG9yYWdlX2xvc3QoKQ0KPiA+ID4gICAgICAgIHhmc19ybWFwX3F1ZXJ5X3Jh bmdlKCkNCj4gPiA+ICAgICAgICAgeGZzX3N0b3JhZ2VfbG9zdF9oZWxwZXIoKQ0KPiA+ID4gICAg ICAgICAgbWZfcmVjb3Zlcl9jb250cm9sbGVyLT5yZWNvdmVyX2ZuID0+IFwNCj4gPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5X2ZhaWx1cmVfZGV2X3BhZ2VtYXBfa2lsbF9w cm9jcygpDQo+ID4gPiANCj4gPiA+IFRoZSBjb2xsZWN0X3Byb2NzKCkgYW5kIGtpbGxfcHJvY3Mo KSBhcmUgbW92ZWQgaW50byBhIGNhbGxiYWNrIHdoaWNoDQo+ID4gPiBpcyBwYXNzZWQgZnJvbSBt ZW1vcnlfZmFpbHVyZSgpIHRvIHhmc19zdG9yYWdlX2xvc3RfaGVscGVyKCkuICBTbyB3ZQ0KPiA+ ID4gY2FuIGNhbGwgaXQgd2hlbiBhIGZpbGUgYXNzb2NhaXRlZCBpcyBmb3VuZCwgaW5zdGVhZCBv ZiBjcmVhdGluZyBhDQo+ID4gPiBmaWxlIGxpc3QgYW5kIGl0ZXJhdGUgaXQuDQo+ID4gPiANCj4g PiA+IFRoZSBmc2RheCAmIHJlZmxpbmsgc3VwcG9ydCBmb3IgWEZTIGlzIG5vdCBjb250YWluZWQg aW4gdGhpcyBwYXRjaHNldC4NCj4gPiANCj4gPiBUaGlzIGxvb2tzIHByb21pc2luZyAtIHRoZSBv dmVyYWxsIGFyY2hpdGVjdHVyZSBpcyBhIGxvdCBtb3JlDQo+ID4gZ2VuZXJpYyBhbmQgbGVzcyBk ZXBlbmRlbnQgb24ga25vd2luZyBhYm91dCBtZW1vcnksIGRheCBvciBtZW1vcnkNCj4gPiBmYWls dXJlcy4gQSBmZXcgY29tbWVudHMgdGhhdCBJIHRoaW5rIHdvdWxkIGZ1cnRoZXIgaW1wcm92ZQ0K PiA+IHVuZGVyc3RhbmRpbmcgdGhlIHBhdGNoc2V0IGFuZCB0aGUgaW1wbGVtZW50YXRpb246DQo+ IA0KPiBUaGFua3MgZm9yIHlvdXIga2luZGx5IGNvbW1lbnQuICBJdCBnaXZlcyBtZSBjb25maWRl bmNlLg0KPiANCj4gPiANCj4gPiAtIHRoZSBvcmRlciBvZiB0aGUgcGF0Y2hlcyBpcyBpbnZlcnRl ZC4gSXQgc2hvdWxkIHN0YXJ0IHdpdGggYQ0KPiA+ICAgIHNpbmdsZSBwYXRjaCBpbnRyb2R1Y2lu ZyB0aGUgbWZfcmVjb3Zlcl9jb250cm9sbGVyIHN0cnVjdHVyZSBmb3INCj4gPiAgICBjYWxsYmFj a3MsIHRoZW4gaW50cm9kdWNlIHBnbWFwLT5vcHMtPm1lbW9yeV9mYWlsdXJlLCB0aGVuDQo+ID4g ICAgLT5ibG9ja19sb3N0LCB0aGVuIHRoZSBwbWVtIGFuZCBtZCBpbXBsZW1lbnRhdGlvbnMgb2Yg LT5ibG9jaw0KPiA+ICAgIGxpc3QsIHRoZW4gLT5zdG9yYWdlX2xvc3QgYW5kIHRoZSBYRlMgaW1w bGVtZW50YXRpb25zIG9mDQo+ID4gICAgLT5zdG9yYWdlX2xvc3QuDQo+IA0KPiBZZXMsIGl0IHdp bGwgYmUgZWFzaWVyIHRvIHVuZGVyc3RhbmQgdGhlIHBhdGNoc2V0IGluIHRoaXMgb3JkZXIuDQo+ IA0KPiBCdXQgSSBoYXZlIHNvbWV0aGluZyB1bnN1cmU6IGZvciBleGFtcGxlLCBJIGludHJvZHVj ZSAtPm1lbW9yeV9mYWlsdXJlKCkNCj4gZmlyc3RseSwgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiBv ZiAtPm1lbW9yeV9mYWlsdXJlKCkgbmVlZHMgdG8gY2FsbA0KPiAtPmJsb2NrX2xvc3QoKSB3aGlj aCBpcyBzdXBwb3NlZCB0byBiZSBpbnRyb2R1Y2VkIGluIHRoZSBuZXh0IHBhdGNoLiBTbywgSQ0K PiBhbSBub3Qgc3VyZSB0aGUgY29kZSBpcyBzdXBwb3NlZCB0byBiZSB3aGF0IGluIHRoZSBpbXBs ZW1lbnRhdGlvbiBvZg0KPiAtPm1lbW9yeV9mYWlsdXJlKCkgaW4gcG1lbT8gIFRvIGF2b2lkIHRo aXMgc2l0dWF0aW9uLCBJIGNvbW1pdHRlZCB0aGUNCj4gcGF0Y2hlcyBpbiB0aGUgaW52ZXJ0ZWQg b3JkZXI6IGxvd2VzdCBsZXZlbCBmaXJzdCwgdGhlbiBpdHMgY2FsbGVyLCBhbmQgdGhlbg0KPiBj YWxsZXIncyBjYWxsZXIuDQoNCldlbGwsIHRoZXJlJ3MgdHdvIHRoaW5ncyBoZXJlLiBUaGUgZmly c3QgaXMgdGhlIGluZnJhc3RydWN0dXJlLCB0aGUNCnNlY29uZCBpcyB0aGUgZHJpdmVycyB0aGF0 IHVzZSB0aGUgaW5mcmFzdHJ1Y3R1cmUuIFlvdSBjYW4gaW50cm9kdWNlDQphIG1ldGhvZCBpbiBv bmUgcGF0Y2gsIGFuZCB0aGVuIHRoZSBkcml2ZXIgdGhhdCB1c2VzIGl0IGluIGFub3RoZXIuDQpP ciB5b3UgY2FuIGludHJvZHVjZSBhIGRyaXZlciBza2VsZXRvbiB0aGF0IGRvZXNuJ3Qgbm90aGlu ZyB1bnRpbA0KbW9yZSBpbmZyYXN0cnVjdHVyZSBpcyBhZGRlZC4gc28uLi4NCg0KPiANCj4gSSBh bSB0cnlpbmcgdG8gc29ydCBvdXQgdGhlIG9yZGVyLiAgSG93IGFib3V0IHRoaXM6DQo+ICBQYXRj aCBpLg0KPiAgICBJbnRyb2R1Y2UgLT5tZW1vcnlfZmFpbHVyZSgpDQo+ICAgICAgIC0ganVzdCBp bnRyb2R1Y2UgaW50ZXJmYWNlLCB3aXRob3V0IGltcGxlbWVudGF0aW9uDQo+ICBQYXRjaCBpKysu DQo+ICAgIEludHJvZHVjZSAtPmJsb2NrX2xvc3QoKQ0KPiAgICAgICAtIGludHJvZHVjZSBpbnRl cmZhY2UgYW5kIGltcGxlbWVudCAtPm1lbW9yeV9mYWlsdXJlKCkNCj4gICAgICAgICAgaW4gcG1l bSwgc28gdGhhdCBpdCBjYW4gY2FsbCAtPmJsb2NrX2xvc3QoKQ0KPiAgUGF0Y2ggaSsrLg0KPiAg ICAoc2ltaWxhciB3aXRoIGFib3ZlLCBza2lwLi4uKQ0KDQpTbyB0aGlzIGlzIGJldHRlciwgYnV0 IHlvdSBkb24ndCBuZWVkIHRvIGFkZCB0aGUgcG1lbSBkcml2ZXIgdXNlIG9mDQoiLT5ibG9ja19s b3N0IiBpbiB0aGUgcGF0Y2ggdGhhdCBhZGRzIHRoZSBtZXRob2QuIElPV3MsIHNvbWV0aGluZw0K bGlrZToNCg0KUDE6IGludHJvZHVjZSAtPm1lbW9yeV9mYWlsdXJlIEFQSSwgYWxsIHRoZSByZXF1 aXJlZCBkb2N1bWVudGF0aW9uDQphbmQgYWRkIHRoZSBjYWxsIHNpdGVzIGluIHRoZSBpbmZyYXN0 cnVjdHVyZSB0aGF0IHRyaWdnZXIgaXQNCg0KUDI6IGludHJvZHVjZSAtPmNvcnJ1cHRlZF9yYW5n ZSB0byB0aGUgYmxvY2sgZGV2aWNlIEFQSSwgYWxsIHRoZQ0KcmVxdWlyZWQgZG9jdW1lbnRhdGlv biBhbmQgYW55IGdlbmVyaWMgYmxvY2sgaW5mcmFzdHJ1Y3R1cmUgdGhhdA0KbmVlZHMgdG8gY2Fs bCBpdC4NCg0KUDM6IGludHJvZHVjZSAtPmNvcnJ1cHRlZF9yYW5nZSB0byB0aGUgc3VwZXJibG9j ayBvcHMgQVBJLCBhbGwgdGhlDQpyZXF1aXJlZCBkb2N1bWVudGF0aW9uDQoNClA0OiBhZGQgLT5j b3JydXB0ZWRfcmFuZ2UoKSBBUEkgdG8gdGhlIGFkZHJlc3Mgc3BhY2Ugb3BzLCBhbGwgdGhlDQpy ZXF1aXJlZCBkb2N1bWVudGF0aW9uDQoNClA1OiBmYWN0b3IgdGhlIGV4aXN0aW5nIGtpbGwgcHJv Y3Mgc3R1ZmYgdG8gYmUgYWJsZSB0byBiZSBjYWxsZWQgb24NCnZpYSBnZW5lcmljX21hcHBpbmdf a2lsbF9yYW5nZSgpDQoNClA1OiBhZGQgZGF4X21hcHBpbmdfa2lsbF9yYW5nZSgpDQoNClA2OiBh ZGQgdGhlIHBtZW0gZHJpdmVyIHN1cHBvcnQgZm9yIC0+bWVtb3J5X2ZhaWx1cmUNCg0KUDc6IGFk ZCB0aGUgYmxvY2sgZGV2aWNlIGRyaXZlciBzdXBwb3J0IGZvciAtPmNvcnJ1cHRlZF9yYW5nZQ0K DQpQODogYWRkIGZpbGVzeXN0ZW0gc3VwcG9ydCBmb3Igc2Jfb3BzLT5jb3JydXB0ZWRfcmFuZ2Uu DQoNClA5OiBhZGQgZmlsZXN5c3RlbSBzdXBwb3J0IGZvciBhb3BzLT5jb3JydXB0ZWRfcmFuZ2Uu DQoNCj4gPiAgICBUaGlzIGdldHMgcmlkIG9mIHRoZSBtZl9yZWNvdmVyX2NvbnRyb2xsZXIgYWx0 b2dldGhlciBhbmQgYWxsb3dzDQo+ID4gICAgdGhlIGludGVyZmFjZSB0byBiZSB1c2VkIGJ5IGFu eSBzb3J0IG9mIGJsb2NrIGRldmljZSBmb3IgYW55IHNvcnQNCj4gPiAgICBvZiBib3R0b20tdXAg cmVwb3J0aW5nIG9mIG1lZGlhL2RldmljZSBmYWlsdXJlcy4NCj4gDQo+IE1vdmluZyB0aGUgcmVj b3ZlciBmdW5jdGlvbiB0byB0aGUgYWRkcmVzc19zcGFjZSBvcHMgbG9va3MgYSBiZXR0ZXIgaWRl YS4NCj4gQnV0IEkgdGhpbmsgdGhhdCB0aGUgZXJyb3IgaGFuZGxlciBmb3IgcGFnZSBjYWNoZSBt YXBwaW5nIGlzIGZpbmlzaGVkIHdlbGwNCj4gaW4gbWVtb3J5LWZhaWx1cmUuICBUaGUgbWVtb3J5 LWZhaWx1cmUgaXMgYWxzbyByZXVzZWQgdG8gaGFuZGxlcyBhbm9ueW1vdXMNCj4gcGFnZS4NCg0K WWVzLCBhbm9ueW1vdXMgcGFnZSBoYW5kbGluZyBjYW4gcmVtYWluIHRoZXJlLCB3ZSdyZSBvbmx5 IGNvbmNlcm5lZA0KYWJvdXQgaGFuZGxpbmcgZmlsZSBtYXBwZWQgcGFnZXMgaGVyZSByaWdodCBu b3cuIElmIHdlIGVuZCB1cA0Kc2hhcmluZyBwYWdlIGNhY2hlIHBhZ2VzIGFjcm9zcyByZWZsaW5r IG1hcHBpbmdzLCB3ZSdsbCBoYXZlIGV4YWN0bHkNCnRoZSBzYW1lIGlzc3VlIHdlIGhhdmUgbm93 IHdpdGggREFYLi4uLg0KDQo+IElmIHdlIG1vdmUgdGhlIHJlY292ZXIgZnVuY3Rpb24gdG8gYWRk cmVzc19zcGFjZSBvcHMsIEkgdGhpbmsgd2UgYWxzbw0KPiBuZWVkIHRvIHJlZmFjdG9yIHRoZSBl eGlzdGluZyBoYW5kbGVyIGZvciBwYWdlIGNhY2hlIG1hcHBpbmcsIHdoaWNoIG1heQ0KPiBhZmZl Y3QgYW5vbnltb3VzIHBhZ2UgaGFuZGxpbmcuICBUaGlzIG1ha2VzIG1lIGNvbmZ1c2VkLi4uDQoN Ck1ha2UgdGhlIGhhbmRsaW5nIG9mIHRoZSBwYWdlIHRoZSBlcnJvciBvY2N1cnJlZCBpbiBjb25k aXRpb25hbCBvbg0KIVBhZ2VBbm9uKCkuDQoNCj4gSSByZXdyb3RlIHRoZSBjYWxsIHRyYWNlOg0K PiBtZW1vcnlfZmFpbHVyZSgpDQo+ICAqIGRheCBtYXBwaW5nIGNhc2UNCj4gIHBnbWFwLT5vcHMt Pm1lbW9yeV9mYWlsdXJlKCkgICAgICAgICAgPT4NCj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwbWVtX3BnbWFwX21lbW9yeV9mYWlsdXJlKCkNCj4gICBnZW5kaXNrLT5mb3Bz LT5ibG9ja19jb3JydXB0X3JhbmdlKCkgPT4NCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtIHBtZW1fYmxvY2tfY29ycnVwdF9yYW5nZSgpDQo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLSBtZF9ibGtfYmxvY2tfY29ycnVwdF9yYW5nZSgpDQo+ICAgIHNi LT5zX29wcy0+c3RvcmFnZV9jdXJydXB0X3JhbmdlKCkgID0+DQo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeGZzX2ZzX3N0b3JhZ2VfY29ycnVwdF9yYW5nZSgpDQoNCk5vIG5l ZWQgZm9yIGJsb2NrL3N0b3JhZ2UgcHJlZml4ZXMgaW4gdGhlc2UuLi4NCg0KPiAgICAgeGZzX3Jt YXBfcXVlcnlfcmFuZ2UoKQ0KPiAgICAgIHhmc19zdG9yYWdlX2xvc3RfaGVscGVyKCkNCj4gICAg ICAgbWFwcGluZy0+YV9vcHMtPmNvcnJ1cHRfcmFuZ2UoKSAgPT4NCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB4ZnNfZGF4X2FvcHMueGZzX2RheF9jb3JydXB0X3JhbmdlDQo+ ICAgICAgICBtZW1vcnlfZmFpbHVyZV9kZXZfcGFnZW1hcF9raWxsX3Byb2NzKCkNCg0KVGhpcyBh c3N1bWVzIHdlIGZpbmQgYSB1c2VyIGRhdGEgbWFwcGluZy4gV2UgbWlnaHQgZmluZCB0aGUNCmNv cnJ1cHRlZCBzdG9yYWdlIGNvbnRhaW5lZCBtZXRhZGF0YSwgaW4gd2hpY2ggY2FzZSB3ZSdsbCBi ZQ0Kc2h1dHRpbmcgZG93biB0aGUgZmlsZXN5c3RlbSwgbm90IHRyeWluZyB0byBraWxsIHVzZXIg cHJvY3MuLi4NCg0KQWxzbywgd2UgZG9uJ3QgbmVlZCBhb3BzLT5jb3JydXB0X3JhbmdlKCkgaGVy ZSBhcyB3ZSBhcmUgYWxyZWFkeSBpbg0KdGhlIGZpbGVzeXN0ZW0gY29kZSBhbmQgaWYgd2UgZmlu ZCBhIG1hcHBpbmcgaW4gbWVtb3J5IHdlIGNhbiBqdXN0DQpkbyAiaWYgKElTX0RBWChtYXBwaW5n LT5ob3N0KSkiIHRvIGNhbGwgdGhlIHJpZ2h0IGtpbGwgcHJvY3MNCmltcGxlbWVudGF0aW9uIGZv ciB0aGUgbWFwcGluZyB3ZSd2ZSBmb3VuZC4gYW9wcy0+Y29ycnVwdF9yYW5nZSBpcw0KZm9yIGdl bmVyaWMgY29kZSB3b3JraW5nIG9uIGEgbWFwcGluZyB0byBpbmZvcm0gdGhlIGZpbGVzeXN0ZW0g dGhhdA0KdGhlcmUgaXMgYSBiYWQgcmFuZ2UgaW4gdGhlIG1hcHBpbmcgKG15IGFwb2xvZ2llcyBm b3IgZ2V0dGluZyB0aGF0DQphbGwgbWl4ZWQgdXAgaW4gbXkgbGFzdCBlbWFpbCkuDQoNCj4gICog cGFnZSBjYWNoZSBtYXBwaW5nIGNhc2UNCj4gIG1hcHBpbmctPmFfb3BzLT5jb3JydXB0X3Jhbmdl KCkgICAgICAgPT4NCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZnNfYWRk cmVzc19zcGFjZV9vcGVyYXRpb25zLnhmc194eHgNCj4gICBtZW1vcnlfZmFpbHVyZV9nZW5lcmlj X2tpbGxfcHJvY3MoKQ0KDQpXZSBuZWVkIHRoZSBhb3BzLT5jb3JydXB0ZWRfcmFuZ2UoKSB0byBj YWxsIGludG8gdGhlIGZpbGVzeXN0ZW0gc28NCml0IGNhbiBkbyBhIHNpbWlsYXIgcmV2ZXJzZSBt YXBwaW5nIGxvb2t1cCB0bw0Kc2ItPnNfb3BzLT5jb3JydXB0ZWRfcmFuZ2UuICBZZXMsIHRoZSBw YWdlIGNhY2hlIHNob3VsZCBhbHJlYWR5IGhhdmUNCmEgbWFwcGluZyBhdHRhY2hlZCB0byB0aGUg cGFnZSwgYnV0IHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgaXQgaXMgdGhlDQpvbmx5IG1hcHBpbmcg dGhhdCBleGlzdHMgZm9yIHRoYXQgcGFnZS4gZS5nLiBpZi93aGVuIHdlIGltcGxlbWVudA0KbXVs dGlwbGUtbWFwcGVkIHNoYXJlZCByZWFkLW9ubHkgcmVmbGluayBwYWdlcyBpbiB0aGUgcGFnZSBj YWNoZQ0Kd2hpY2ggcmVzdWx0cyBpbiB0aGUgc2FtZSBwcm9ibGVtIHdlIGhhdmUgd2l0aCBEQVgg cGFnZXMgcmlnaHQgbm93Lg0KDQpPdmVyYWxsLCB0aG91Z2gsIGl0IHNlZW1zIGxpa2UgeW91J3Jl IG9uIHRoZSByaWdodCBwYXRoLiA6KQ0KDQpDaGVlcnMsDQoNCkRhdmUuDQotLSANCkRhdmUgQ2hp bm5lcg0KZGF2aWRAZnJvbW9yYml0LmNvbQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpMaW51eC1udmRpbW0gbWFpbGluZyBsaXN0IC0tIGxpbnV4LW52ZGlt bUBsaXN0cy4wMS5vcmcKVG8gdW5zdWJzY3JpYmUgc2VuZCBhbiBlbWFpbCB0byBsaW51eC1udmRp bW0tbGVhdmVAbGlzdHMuMDEub3JnCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BB495C4167B for ; Sun, 6 Dec 2020 22:56:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8A885230FA for ; Sun, 6 Dec 2020 22:56:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727350AbgLFW4E (ORCPT ); Sun, 6 Dec 2020 17:56:04 -0500 Received: from mail108.syd.optusnet.com.au ([211.29.132.59]:53337 "EHLO mail108.syd.optusnet.com.au" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726046AbgLFW4E (ORCPT ); Sun, 6 Dec 2020 17:56:04 -0500 Received: from dread.disaster.area (pa49-179-6-140.pa.nsw.optusnet.com.au [49.179.6.140]) by mail108.syd.optusnet.com.au (Postfix) with ESMTPS id 6D9241AC2B8; Mon, 7 Dec 2020 09:55:19 +1100 (AEDT) Received: from dave by dread.disaster.area with local (Exim 4.92.3) (envelope-from ) id 1km2w2-001FXH-Ks; Mon, 07 Dec 2020 09:55:18 +1100 Date: Mon, 7 Dec 2020 09:55:18 +1100 From: Dave Chinner To: Ruan Shiyang Cc: linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-nvdimm@lists.01.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-raid@vger.kernel.org, darrick.wong@oracle.com, dan.j.williams@intel.com, hch@lst.de, song@kernel.org, rgoldwyn@suse.de, qi.fuli@fujitsu.com, y-goto@fujitsu.com Subject: Re: [RFC PATCH v2 0/6] fsdax: introduce fs query to support reflink Message-ID: <20201206225518.GJ3913616@dread.disaster.area> References: <20201123004116.2453-1-ruansy.fnst@cn.fujitsu.com> <20201129224723.GG2842436@dread.disaster.area> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Optus-CM-Score: 0 X-Optus-CM-Analysis: v=2.3 cv=F8MpiZpN c=1 sm=1 tr=0 cx=a_idp_d a=uDU3YIYVKEaHT0eX+MXYOQ==:117 a=uDU3YIYVKEaHT0eX+MXYOQ==:17 a=IkcTkHD0fZMA:10 a=zTNgK-yGK50A:10 a=7-415B0cAAAA:8 a=HHWehwv_o5C9Q5xAZY4A:9 a=QEXdDO2ut3YA:10 a=biEYGPWJfzWAr4FL6Ov7:22 Precedence: bulk List-ID: X-Mailing-List: linux-raid@vger.kernel.org On Wed, Dec 02, 2020 at 03:12:20PM +0800, Ruan Shiyang wrote: > Hi Dave, > > On 2020/11/30 上午6:47, Dave Chinner wrote: > > On Mon, Nov 23, 2020 at 08:41:10AM +0800, Shiyang Ruan wrote: > > > > > > The call trace is like this: > > > memory_failure() > > > pgmap->ops->memory_failure() => pmem_pgmap_memory_failure() > > > gendisk->fops->block_lost() => pmem_block_lost() or > > > md_blk_block_lost() > > > sb->s_ops->storage_lost() => xfs_fs_storage_lost() > > > xfs_rmap_query_range() > > > xfs_storage_lost_helper() > > > mf_recover_controller->recover_fn => \ > > > memory_failure_dev_pagemap_kill_procs() > > > > > > The collect_procs() and kill_procs() are moved into a callback which > > > is passed from memory_failure() to xfs_storage_lost_helper(). So we > > > can call it when a file assocaited is found, instead of creating a > > > file list and iterate it. > > > > > > The fsdax & reflink support for XFS is not contained in this patchset. > > > > This looks promising - the overall architecture is a lot more > > generic and less dependent on knowing about memory, dax or memory > > failures. A few comments that I think would further improve > > understanding the patchset and the implementation: > > Thanks for your kindly comment. It gives me confidence. > > > > > - the order of the patches is inverted. It should start with a > > single patch introducing the mf_recover_controller structure for > > callbacks, then introduce pgmap->ops->memory_failure, then > > ->block_lost, then the pmem and md implementations of ->block > > list, then ->storage_lost and the XFS implementations of > > ->storage_lost. > > Yes, it will be easier to understand the patchset in this order. > > But I have something unsure: for example, I introduce ->memory_failure() > firstly, but the implementation of ->memory_failure() needs to call > ->block_lost() which is supposed to be introduced in the next patch. So, I > am not sure the code is supposed to be what in the implementation of > ->memory_failure() in pmem? To avoid this situation, I committed the > patches in the inverted order: lowest level first, then its caller, and then > caller's caller. Well, there's two things here. The first is the infrastructure, the second is the drivers that use the infrastructure. You can introduce a method in one patch, and then the driver that uses it in another. Or you can introduce a driver skeleton that doesn't nothing until more infrastructure is added. so... > > I am trying to sort out the order. How about this: > Patch i. > Introduce ->memory_failure() > - just introduce interface, without implementation > Patch i++. > Introduce ->block_lost() > - introduce interface and implement ->memory_failure() > in pmem, so that it can call ->block_lost() > Patch i++. > (similar with above, skip...) So this is better, but you don't need to add the pmem driver use of "->block_lost" in the patch that adds the method. IOWs, something like: P1: introduce ->memory_failure API, all the required documentation and add the call sites in the infrastructure that trigger it P2: introduce ->corrupted_range to the block device API, all the required documentation and any generic block infrastructure that needs to call it. P3: introduce ->corrupted_range to the superblock ops API, all the required documentation P4: add ->corrupted_range() API to the address space ops, all the required documentation P5: factor the existing kill procs stuff to be able to be called on via generic_mapping_kill_range() P5: add dax_mapping_kill_range() P6: add the pmem driver support for ->memory_failure P7: add the block device driver support for ->corrupted_range P8: add filesystem support for sb_ops->corrupted_range. P9: add filesystem support for aops->corrupted_range. > > This gets rid of the mf_recover_controller altogether and allows > > the interface to be used by any sort of block device for any sort > > of bottom-up reporting of media/device failures. > > Moving the recover function to the address_space ops looks a better idea. > But I think that the error handler for page cache mapping is finished well > in memory-failure. The memory-failure is also reused to handles anonymous > page. Yes, anonymous page handling can remain there, we're only concerned about handling file mapped pages here right now. If we end up sharing page cache pages across reflink mappings, we'll have exactly the same issue we have now with DAX.... > If we move the recover function to address_space ops, I think we also > need to refactor the existing handler for page cache mapping, which may > affect anonymous page handling. This makes me confused... Make the handling of the page the error occurred in conditional on !PageAnon(). > I rewrote the call trace: > memory_failure() > * dax mapping case > pgmap->ops->memory_failure() => > pmem_pgmap_memory_failure() > gendisk->fops->block_corrupt_range() => > - pmem_block_corrupt_range() > - md_blk_block_corrupt_range() > sb->s_ops->storage_currupt_range() => > xfs_fs_storage_corrupt_range() No need for block/storage prefixes in these... > xfs_rmap_query_range() > xfs_storage_lost_helper() > mapping->a_ops->corrupt_range() => > xfs_dax_aops.xfs_dax_corrupt_range > memory_failure_dev_pagemap_kill_procs() This assumes we find a user data mapping. We might find the corrupted storage contained metadata, in which case we'll be shutting down the filesystem, not trying to kill user procs... Also, we don't need aops->corrupt_range() here as we are already in the filesystem code and if we find a mapping in memory we can just do "if (IS_DAX(mapping->host))" to call the right kill procs implementation for the mapping we've found. aops->corrupt_range is for generic code working on a mapping to inform the filesystem that there is a bad range in the mapping (my apologies for getting that all mixed up in my last email). > * page cache mapping case > mapping->a_ops->corrupt_range() => > xfs_address_space_operations.xfs_xxx > memory_failure_generic_kill_procs() We need the aops->corrupted_range() to call into the filesystem so it can do a similar reverse mapping lookup to sb->s_ops->corrupted_range. Yes, the page cache should already have a mapping attached to the page, but we do not know whether it is the only mapping that exists for that page. e.g. if/when we implement multiple-mapped shared read-only reflink pages in the page cache which results in the same problem we have with DAX pages right now. Overall, though, it seems like you're on the right path. :) Cheers, Dave. -- Dave Chinner david@fromorbit.com