From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Williams, Dan J" Subject: Re: [PATCH v2 10/12] block: move blk_integrity to request_queue Date: Fri, 16 Oct 2015 00:42:19 +0000 Message-ID: <1444956139.2737.7.camel@intel.com> References: <20151015195939.20721.23101.stgit@dwillia2-desk3.jf.intel.com> <20151015200034.20721.23425.stgit@dwillia2-desk3.jf.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20151015200034.20721.23425.stgit@dwillia2-desk3.jf.intel.com> Content-Language: en-US Content-ID: <24074458BB173143B7F486C77D86846F@intel.com> Sender: linux-raid-owner@vger.kernel.org To: "martin.petersen@oracle.com" Cc: "linux-raid@vger.kernel.org" , "dm-devel@redhat.com" , "linux-nvdimm@lists.01.org" , "linux-nvme@lists.infradead.org" , "axboe@fb.com" , "hch@lst.de" List-Id: dm-devel.ids T24gVGh1LCAyMDE1LTEwLTE1IGF0IDE2OjAwIC0wNDAwLCBEYW4gV2lsbGlhbXMgd3JvdGU6DQo+ IEEgdHJhY2UgbGlrZSB0aGUgZm9sbG93aW5nIHByb2NlZWRzIGEgY3Jhc2ggaW4gYmlvX2ludGVn cml0eV9wcm9jZXNzKCkNCj4gd2hlbiBpdCBnb2VzIHRvIHVzZSBhbiBhbHJlYWR5IGZyZWVkIGJs a19pbnRlZ3JpdHkgcHJvZmlsZS4NCj4gDQo+ICBCVUc6IHVuYWJsZSB0byBoYW5kbGUga2VybmVs IHBhZ2luZyByZXF1ZXN0IGF0IGZmZmY4ODAwZDMxYjEwZDgNCj4gIElQOiBbPGZmZmY4ODAwZDMx YjEwZDg+XSAweGZmZmY4ODAwZDMxYjEwZDgNCj4gIFBHRCAyZjY1MDY3IFBVRCAyMWZmZmQwNjcg UE1EIDgwMDAwMDAwZDMwMDAxZTMNCj4gIE9vcHM6IDAwMTEgWyMxXSBTTVANCj4gIER1bXBpbmcg ZnRyYWNlIGJ1ZmZlcjoNCj4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAg ICAgbmRjdGwtMjIyMiAgICAyLi4uLiA0NDUyNjI0NXVzIDogZGlza19yZWxlYXNlOiBwbWVtMXMN Cj4gIHN5c3RlbWQtLTIyMjMgICAgNC4uLi4gNDQ1NzM5NDV1cyA6IGJpb19pbnRlZ3JpdHlfZW5k aW86IHBtZW0xcw0KPiAgICAgPC4uLj4tNDA5ICAgICA0Li4uLiA0NDU3NDAwNXVzIDogYmlvX2lu dGVncml0eV9wcm9jZXNzOiBwbWVtMXMNCj4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KPiBbLi5dDQo+ICAgQ2FsbCBUcmFjZToNCj4gICBbPGZmZmZmZmZmODE0NGUwZjk+XSA/ IGJpb19pbnRlZ3JpdHlfcHJvY2VzcysweDE1OS8weDJkMA0KPiAgIFs8ZmZmZmZmZmY4MTQ0ZTRm Nj5dIGJpb19pbnRlZ3JpdHlfdmVyaWZ5X2ZuKzB4MzYvMHg2MA0KPiAgIFs8ZmZmZmZmZmY4MTBi ZDJkYz5dIHByb2Nlc3Nfb25lX3dvcmsrMHgxY2MvMHg0ZTANCj4gDQo+IEdpdmVuIHRoYXQgYSBy ZXF1ZXN0X3F1ZXVlIGlzIHBpbm5lZCB3aGlsZSBpL28gaXMgaW4gZmxpZ2h0IGFuZCB0aGF0IGEN Cj4gZ2VuZGlzayBpcyBhbGxvd2VkIHRvIGhhdmUgYSBzaG9ydGVyIGxpZmV0aW1lLCBtb3ZlIGJs a19pbnRlZ3JpdHkgdG8NCj4gcmVxdWVzdF9xdWV1ZSB0byBzYXRpc2Z5IHJlcXVlc3RzIGFycml2 aW5nIGFmdGVyIHRoZSBnZW5kaXNrIGhhcyBiZWVuDQo+IHRvcm4gZG93bi4NCj4gDQo+IENjOiBD aHJpc3RvcGggSGVsbHdpZyA8aGNoQGxzdC5kZT4NCj4gQ2M6IE1hcnRpbiBLLiBQZXRlcnNlbiA8 bWFydGluLnBldGVyc2VuQG9yYWNsZS5jb20+DQo+IFttYXJ0aW46IGZpeCB0aGUgQ09ORklHX0JM S19ERVZfSU5URUdSSVRZPW4gY2FzZV0NCj4gVGVzdGVkLWJ5OiBSb3NzIFp3aXNsZXIgPHJvc3Mu endpc2xlckBsaW51eC5pbnRlbC5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IERhbiBXaWxsaWFtcyA8 ZGFuLmoud2lsbGlhbXNAaW50ZWwuY29tPg0KPiAtLS0NCj4gIERvY3VtZW50YXRpb24vQUJJL3Rl c3Rpbmcvc3lzZnMtYmxvY2sgfCAgIDEyICsrKy0tLQ0KPiAgYmxvY2svYmxrLWludGVncml0eS5j ICAgICAgICAgICAgICAgICB8ICAgNjMgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t DQo+ICBibG9jay9ibGstc3lzZnMuYyAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArKw0KPiAg YmxvY2svZ2VuaGQuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgLQ0KPiAgYmxvY2sv cGFydGl0aW9uLWdlbmVyaWMuYyAgICAgICAgICAgICB8ICAgIDIgKw0KPiAgZHJpdmVycy9tZC9k bS10YWJsZS5jICAgICAgICAgICAgICAgICB8ICAgIDQgKy0NCj4gIGRyaXZlcnMvbWQvbWQuYyAg ICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstDQo+ICBkcml2ZXJzL252ZGltbS9jb3JlLmMg ICAgICAgICAgICAgICAgIHwgICAgMiArDQo+ICBkcml2ZXJzL252bWUvaG9zdC9wY2kuYyAgICAg ICAgICAgICAgIHwgICAgOCArKystDQo+ICBkcml2ZXJzL3Njc2kvc2RfZGlmLmMgICAgICAgICAg ICAgICAgIHwgICAgMiArDQo+ICBmcy9ibG9ja19kZXYuYyAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgMiArDQo+ICBpbmNsdWRlL2xpbnV4L2Jsa2Rldi5oICAgICAgICAgICAgICAgIHwgICAx NiArKysrKystLQ0KPiAgaW5jbHVkZS9saW51eC9nZW5oZC5oICAgICAgICAgICAgICAgICB8ICAg MTYgKysrLS0tLS0NCj4gIDEzIGZpbGVzIGNoYW5nZWQsIDcyIGluc2VydGlvbnMoKyksIDY1IGRl bGV0aW9ucygtKQ0KPiANCg0KTWFydGluIHBvaW50ZWQgb3V0IHRoYXQgSSBicm9rZSBjb21wYXRp YmlsaXR5IGJ5IGNoYW5naW5nIHRoZSBzeXNmcw0KbGF5b3V0IG9mIHRoZSBpbnRlZ3JpdHkgYXR0 cmlidXRlcy4gIFJhdGhlciB0aGFuIGFkZCBhIHN5c2ZzLWxpbmsgd2UgY2FuDQptYWtlIHRoaXMg cGF0Y2ggc2ltcGxlciBieSBvbmx5IG1vdmluZyBzdHJ1Y3QgYmxrX2ludGVncml0eSB0bw0KcmVx dWVzdF9xdWV1ZSBhbmQgbGVhdmUgaW50ZWdyaXR5X2tvYmogd2hlcmUgaXQgaXMgaW4gZ2VuZGlz ay4NCg0KQWxzbyB1bmRvIHRoZSBjb252ZXJzaW9uIG9mIGJsa19pbnRlZ3JpdHkgYXBpcyB0YWtl IGEgcmVxdWVzdF9xdWV1ZS4NClRocm91Z2ggdGhpcyBzaW1wbGlmaWNhdGlvbiBJIGFsc28gbm90 aWNlZCB0aGF0IEkgaGFkIGJyb2tlbg0KYmxrX2ludGVncml0eV9jb21wYXJlKCkNCg0KSGVyZSdz IHRoZSBtdWNoIHNtYWxsZXIgdjMsIGFuZCBJIGFsc28gcmVmcmVzaGVkIGZvci00LjQvYmxrLWlu dGVncml0eQ0KDQo4PC0tLS0tDQpTdWJqZWN0OiBibG9jazogbW92ZSBibGtfaW50ZWdyaXR5IHRv IHJlcXVlc3RfcXVldWUNCg0KRnJvbTogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFtc0BpbnRl bC5jb20+DQoNCkEgdHJhY2UgbGlrZSB0aGUgZm9sbG93aW5nIHByb2NlZWRzIGEgY3Jhc2ggaW4g YmlvX2ludGVncml0eV9wcm9jZXNzKCkNCndoZW4gaXQgZ29lcyB0byB1c2UgYW4gYWxyZWFkeSBm cmVlZCBibGtfaW50ZWdyaXR5IHByb2ZpbGUuDQoNCiBCVUc6IHVuYWJsZSB0byBoYW5kbGUga2Vy bmVsIHBhZ2luZyByZXF1ZXN0IGF0IGZmZmY4ODAwZDMxYjEwZDgNCiBJUDogWzxmZmZmODgwMGQz MWIxMGQ4Pl0gMHhmZmZmODgwMGQzMWIxMGQ4DQogUEdEIDJmNjUwNjcgUFVEIDIxZmZmZDA2NyBQ TUQgODAwMDAwMDBkMzAwMDFlMw0KIE9vcHM6IDAwMTEgWyMxXSBTTVANCiBEdW1waW5nIGZ0cmFj ZSBidWZmZXI6DQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgbmRjdGwt MjIyMiAgICAyLi4uLiA0NDUyNjI0NXVzIDogZGlza19yZWxlYXNlOiBwbWVtMXMNCiBzeXN0ZW1k LS0yMjIzICAgIDQuLi4uIDQ0NTczOTQ1dXMgOiBiaW9faW50ZWdyaXR5X2VuZGlvOiBwbWVtMXMN CiAgICA8Li4uPi00MDkgICAgIDQuLi4uIDQ0NTc0MDA1dXMgOiBiaW9faW50ZWdyaXR5X3Byb2Nl c3M6IHBtZW0xcw0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KWy4uXQ0KICBD YWxsIFRyYWNlOg0KICBbPGZmZmZmZmZmODE0NGUwZjk+XSA/IGJpb19pbnRlZ3JpdHlfcHJvY2Vz cysweDE1OS8weDJkMA0KICBbPGZmZmZmZmZmODE0NGU0ZjY+XSBiaW9faW50ZWdyaXR5X3Zlcmlm eV9mbisweDM2LzB4NjANCiAgWzxmZmZmZmZmZjgxMGJkMmRjPl0gcHJvY2Vzc19vbmVfd29yaysw eDFjYy8weDRlMA0KDQpHaXZlbiB0aGF0IGEgcmVxdWVzdF9xdWV1ZSBpcyBwaW5uZWQgd2hpbGUg aS9vIGlzIGluIGZsaWdodCBhbmQgdGhhdCBhDQpnZW5kaXNrIGlzIGFsbG93ZWQgdG8gaGF2ZSBh IHNob3J0ZXIgbGlmZXRpbWUsIG1vdmUgYmxrX2ludGVncml0eSB0bw0KcmVxdWVzdF9xdWV1ZSB0 byBzYXRpc2Z5IHJlcXVlc3RzIGFycml2aW5nIGFmdGVyIHRoZSBnZW5kaXNrIGhhcyBiZWVuDQp0 b3JuIGRvd24uDQoNCkNjOiBDaHJpc3RvcGggSGVsbHdpZyA8aGNoQGxzdC5kZT4NCkNjOiBNYXJ0 aW4gSy4gUGV0ZXJzZW4gPG1hcnRpbi5wZXRlcnNlbkBvcmFjbGUuY29tPg0KW21hcnRpbjogZml4 IHRoZSBDT05GSUdfQkxLX0RFVl9JTlRFR1JJVFk9biBjYXNlXQ0KVGVzdGVkLWJ5OiBSb3NzIFp3 aXNsZXIgPHJvc3Muendpc2xlckBsaW51eC5pbnRlbC5jb20+DQpTaWduZWQtb2ZmLWJ5OiBEYW4g V2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4NCi0tLQ0KIGJsb2NrL2Jsay1pbnRl Z3JpdHkuYyAgIHwgICAxNCArKysrKysrLS0tLS0tLQ0KIGRyaXZlcnMvbnZtZS9ob3N0L3BjaS5j IHwgICAgMiArLQ0KIGluY2x1ZGUvbGludXgvYmxrZGV2LmggIHwgICAgNiArKysrKy0NCiBpbmNs dWRlL2xpbnV4L2dlbmhkLmggICB8ICAgIDEgLQ0KIDQgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0 aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9ibG9jay9ibGstaW50ZWdy aXR5LmMgYi9ibG9jay9ibGstaW50ZWdyaXR5LmMNCmluZGV4IDQ2MTVhMzM4Njc5OC4uNWQzMzlh ZTY0ZDU2IDEwMDY0NA0KLS0tIGEvYmxvY2svYmxrLWludGVncml0eS5jDQorKysgYi9ibG9jay9i bGstaW50ZWdyaXR5LmMNCkBAIC0xNDIsOCArMTQyLDggQEAgRVhQT1JUX1NZTUJPTChibGtfcnFf bWFwX2ludGVncml0eV9zZyk7DQogICovDQogaW50IGJsa19pbnRlZ3JpdHlfY29tcGFyZShzdHJ1 Y3QgZ2VuZGlzayAqZ2QxLCBzdHJ1Y3QgZ2VuZGlzayAqZ2QyKQ0KIHsNCi0Jc3RydWN0IGJsa19p bnRlZ3JpdHkgKmIxID0gJmdkMS0+aW50ZWdyaXR5Ow0KLQlzdHJ1Y3QgYmxrX2ludGVncml0eSAq YjIgPSAmZ2QyLT5pbnRlZ3JpdHk7DQorCXN0cnVjdCBibGtfaW50ZWdyaXR5ICpiMSA9ICZnZDEt PnF1ZXVlLT5pbnRlZ3JpdHk7DQorCXN0cnVjdCBibGtfaW50ZWdyaXR5ICpiMiA9ICZnZDItPnF1 ZXVlLT5pbnRlZ3JpdHk7DQogDQogCWlmICghYjEtPnByb2ZpbGUgJiYgIWIyLT5wcm9maWxlKQ0K IAkJcmV0dXJuIDA7DQpAQCAtMjQ2LDcgKzI0Niw3IEBAIHN0YXRpYyBzc2l6ZV90IGludGVncml0 eV9hdHRyX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIs DQogCQkJCSAgIGNoYXIgKnBhZ2UpDQogew0KIAlzdHJ1Y3QgZ2VuZGlzayAqZGlzayA9IGNvbnRh aW5lcl9vZihrb2JqLCBzdHJ1Y3QgZ2VuZGlzaywgaW50ZWdyaXR5X2tvYmopOw0KLQlzdHJ1Y3Qg YmxrX2ludGVncml0eSAqYmkgPSAmZGlzay0+aW50ZWdyaXR5Ow0KKwlzdHJ1Y3QgYmxrX2ludGVn cml0eSAqYmkgPSAmZGlzay0+cXVldWUtPmludGVncml0eTsNCiAJc3RydWN0IGludGVncml0eV9z eXNmc19lbnRyeSAqZW50cnkgPQ0KIAkJY29udGFpbmVyX29mKGF0dHIsIHN0cnVjdCBpbnRlZ3Jp dHlfc3lzZnNfZW50cnksIGF0dHIpOw0KIA0KQEAgLTI1OCw3ICsyNTgsNyBAQCBzdGF0aWMgc3Np emVfdCBpbnRlZ3JpdHlfYXR0cl9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwNCiAJCQkJICAg IHNpemVfdCBjb3VudCkNCiB7DQogCXN0cnVjdCBnZW5kaXNrICpkaXNrID0gY29udGFpbmVyX29m KGtvYmosIHN0cnVjdCBnZW5kaXNrLCBpbnRlZ3JpdHlfa29iaik7DQotCXN0cnVjdCBibGtfaW50 ZWdyaXR5ICpiaSA9ICZkaXNrLT5pbnRlZ3JpdHk7DQorCXN0cnVjdCBibGtfaW50ZWdyaXR5ICpi aSA9ICZkaXNrLT5xdWV1ZS0+aW50ZWdyaXR5Ow0KIAlzdHJ1Y3QgaW50ZWdyaXR5X3N5c2ZzX2Vu dHJ5ICplbnRyeSA9DQogCQljb250YWluZXJfb2YoYXR0ciwgc3RydWN0IGludGVncml0eV9zeXNm c19lbnRyeSwgYXR0cik7DQogCXNzaXplX3QgcmV0ID0gMDsNCkBAIC0zOTcsNyArMzk3LDcgQEAg c3RhdGljIHN0cnVjdCBrb2JqX3R5cGUgaW50ZWdyaXR5X2t0eXBlID0gew0KICAqLw0KIHZvaWQg YmxrX2ludGVncml0eV9yZWdpc3RlcihzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgc3RydWN0IGJsa19p bnRlZ3JpdHkgKnRlbXBsYXRlKQ0KIHsNCi0Jc3RydWN0IGJsa19pbnRlZ3JpdHkgKmJpID0gJmRp c2stPmludGVncml0eTsNCisJc3RydWN0IGJsa19pbnRlZ3JpdHkgKmJpID0gJmRpc2stPnF1ZXVl LT5pbnRlZ3JpdHk7DQogDQogCWJpLT5mbGFncyA9IEJMS19JTlRFR1JJVFlfVkVSSUZZIHwgQkxL X0lOVEVHUklUWV9HRU5FUkFURSB8DQogCQl0ZW1wbGF0ZS0+ZmxhZ3M7DQpAQCAtNDIwLDEzICs0 MjAsMTMgQEAgRVhQT1JUX1NZTUJPTChibGtfaW50ZWdyaXR5X3JlZ2lzdGVyKTsNCiB2b2lkIGJs a19pbnRlZ3JpdHlfdW5yZWdpc3RlcihzdHJ1Y3QgZ2VuZGlzayAqZGlzaykNCiB7DQogCWJsa19p bnRlZ3JpdHlfcmV2YWxpZGF0ZShkaXNrKTsNCi0JbWVtc2V0KCZkaXNrLT5pbnRlZ3JpdHksIDAs IHNpemVvZihzdHJ1Y3QgYmxrX2ludGVncml0eSkpOw0KKwltZW1zZXQoJmRpc2stPnF1ZXVlLT5p bnRlZ3JpdHksIDAsIHNpemVvZihzdHJ1Y3QgYmxrX2ludGVncml0eSkpOw0KIH0NCiBFWFBPUlRf U1lNQk9MKGJsa19pbnRlZ3JpdHlfdW5yZWdpc3Rlcik7DQogDQogdm9pZCBibGtfaW50ZWdyaXR5 X3JldmFsaWRhdGUoc3RydWN0IGdlbmRpc2sgKmRpc2spDQogew0KLQlzdHJ1Y3QgYmxrX2ludGVn cml0eSAqYmkgPSAmZGlzay0+aW50ZWdyaXR5Ow0KKwlzdHJ1Y3QgYmxrX2ludGVncml0eSAqYmkg PSAmZGlzay0+cXVldWUtPmludGVncml0eTsNCiANCiAJaWYgKCEoZGlzay0+ZmxhZ3MgJiBHRU5I RF9GTF9VUCkpDQogCQlyZXR1cm47DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lL2hvc3QvcGNp LmMgYi9kcml2ZXJzL252bWUvaG9zdC9wY2kuYw0KaW5kZXggNTU3OGRlNjdmNDA2Li4yYTM5MzE0 ZmM2MWEgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL252bWUvaG9zdC9wY2kuYw0KKysrIGIvZHJpdmVy cy9udm1lL2hvc3QvcGNpLmMNCkBAIC01MzgsNyArNTM4LDcgQEAgc3RhdGljIHZvaWQgbnZtZV9k aWZfcmVtYXAoc3RydWN0IHJlcXVlc3QgKnJlcSwNCiAJdmlydCA9IGJpcF9nZXRfc2VlZChiaXAp Ow0KIAlwaHlzID0gbnZtZV9ibG9ja19ucihucywgYmxrX3JxX3BvcyhyZXEpKTsNCiAJbmxiID0g KGJsa19ycV9ieXRlcyhyZXEpID4+IG5zLT5sYmFfc2hpZnQpOw0KLQl0cyA9IG5zLT5kaXNrLT5p bnRlZ3JpdHkudHVwbGVfc2l6ZTsNCisJdHMgPSBucy0+ZGlzay0+cXVldWUtPmludGVncml0eS50 dXBsZV9zaXplOw0KIA0KIAlmb3IgKGkgPSAwOyBpIDwgbmxiOyBpKyssIHZpcnQrKywgcGh5cysr KSB7DQogCQlwaSA9IChzdHJ1Y3QgdDEwX3BpX3R1cGxlICopcDsNCmRpZmYgLS1naXQgYS9pbmNs dWRlL2xpbnV4L2Jsa2Rldi5oIGIvaW5jbHVkZS9saW51eC9ibGtkZXYuaA0KaW5kZXggM2UwNDY1 MjU3ZDY4Li5jZjU3ODg0ZGI0YjcgMTAwNjQ0DQotLS0gYS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5o DQorKysgYi9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oDQpAQCAtMzY5LDYgKzM2OSwxMCBAQCBzdHJ1 Y3QgcmVxdWVzdF9xdWV1ZSB7DQogCSAqLw0KIAlzdHJ1Y3Qga29iamVjdCBtcV9rb2JqOw0KIA0K KyNpZmRlZiAgQ09ORklHX0JMS19ERVZfSU5URUdSSVRZDQorCXN0cnVjdCBibGtfaW50ZWdyaXR5 IGludGVncml0eTsNCisjZW5kaWYJLyogQ09ORklHX0JMS19ERVZfSU5URUdSSVRZICovDQorDQog I2lmZGVmIENPTkZJR19QTQ0KIAlzdHJ1Y3QgZGV2aWNlCQkqZGV2Ow0KIAlpbnQJCQlycG1fc3Rh dHVzOw0KQEAgLTE0ODEsNyArMTQ4NSw3IEBAIGV4dGVybiBib29sIGJsa19pbnRlZ3JpdHlfbWVy Z2VfYmlvKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICosIHN0cnVjdCByZXF1ZXN0ICosDQogDQogc3Rh dGljIGlubGluZSBzdHJ1Y3QgYmxrX2ludGVncml0eSAqYmxrX2dldF9pbnRlZ3JpdHkoc3RydWN0 IGdlbmRpc2sgKmRpc2spDQogew0KLQlzdHJ1Y3QgYmxrX2ludGVncml0eSAqYmkgPSAmZGlzay0+ aW50ZWdyaXR5Ow0KKwlzdHJ1Y3QgYmxrX2ludGVncml0eSAqYmkgPSAmZGlzay0+cXVldWUtPmlu dGVncml0eTsNCiANCiAJaWYgKCFiaS0+cHJvZmlsZSkNCiAJCXJldHVybiBOVUxMOw0KZGlmZiAt LWdpdCBhL2luY2x1ZGUvbGludXgvZ2VuaGQuaCBiL2luY2x1ZGUvbGludXgvZ2VuaGQuaA0KaW5k ZXggODJmNDkxMWUwYWQ4Li44NDdjYzFkOTE2MzQgMTAwNjQ0DQotLS0gYS9pbmNsdWRlL2xpbnV4 L2dlbmhkLmgNCisrKyBiL2luY2x1ZGUvbGludXgvZ2VuaGQuaA0KQEAgLTIxMCw3ICsyMTAsNiBA QCBzdHJ1Y3QgZ2VuZGlzayB7DQogCWF0b21pY190IHN5bmNfaW87CQkvKiBSQUlEICovDQogCXN0 cnVjdCBkaXNrX2V2ZW50cyAqZXY7DQogI2lmZGVmICBDT05GSUdfQkxLX0RFVl9JTlRFR1JJVFkN Ci0Jc3RydWN0IGJsa19pbnRlZ3JpdHkgaW50ZWdyaXR5Ow0KIAlzdHJ1Y3Qga29iamVjdCBpbnRl Z3JpdHlfa29iajsNCiAjZW5kaWYJLyogQ09ORklHX0JMS19ERVZfSU5URUdSSVRZICovDQogCWlu dCBub2RlX2lkOw0KDQo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: dan.j.williams@intel.com (Williams, Dan J) Date: Fri, 16 Oct 2015 00:42:19 +0000 Subject: [PATCH v2 10/12] block: move blk_integrity to request_queue In-Reply-To: <20151015200034.20721.23425.stgit@dwillia2-desk3.jf.intel.com> References: <20151015195939.20721.23101.stgit@dwillia2-desk3.jf.intel.com> <20151015200034.20721.23425.stgit@dwillia2-desk3.jf.intel.com> Message-ID: <1444956139.2737.7.camel@intel.com> On Thu, 2015-10-15@16:00 -0400, Dan Williams wrote: > A trace like the following proceeds a crash in bio_integrity_process() > when it goes to use an already freed blk_integrity profile. > > BUG: unable to handle kernel paging request at ffff8800d31b10d8 > IP: [] 0xffff8800d31b10d8 > PGD 2f65067 PUD 21fffd067 PMD 80000000d30001e3 > Oops: 0011 [#1] SMP > Dumping ftrace buffer: > --------------------------------- > ndctl-2222 2.... 44526245us : disk_release: pmem1s > systemd--2223 4.... 44573945us : bio_integrity_endio: pmem1s > <...>-409 4.... 44574005us : bio_integrity_process: pmem1s > --------------------------------- > [..] > Call Trace: > [] ? bio_integrity_process+0x159/0x2d0 > [] bio_integrity_verify_fn+0x36/0x60 > [] process_one_work+0x1cc/0x4e0 > > Given that a request_queue is pinned while i/o is in flight and that a > gendisk is allowed to have a shorter lifetime, move blk_integrity to > request_queue to satisfy requests arriving after the gendisk has been > torn down. > > Cc: Christoph Hellwig > Cc: Martin K. Petersen > [martin: fix the CONFIG_BLK_DEV_INTEGRITY=n case] > Tested-by: Ross Zwisler > Signed-off-by: Dan Williams > --- > Documentation/ABI/testing/sysfs-block | 12 +++--- > block/blk-integrity.c | 63 +++++++++++++++++---------------- > block/blk-sysfs.c | 4 ++ > block/genhd.c | 2 - > block/partition-generic.c | 2 + > drivers/md/dm-table.c | 4 +- > drivers/md/md.c | 4 +- > drivers/nvdimm/core.c | 2 + > drivers/nvme/host/pci.c | 8 +++- > drivers/scsi/sd_dif.c | 2 + > fs/block_dev.c | 2 + > include/linux/blkdev.h | 16 ++++++-- > include/linux/genhd.h | 16 +++----- > 13 files changed, 72 insertions(+), 65 deletions(-) > Martin pointed out that I broke compatibility by changing the sysfs layout of the integrity attributes. Rather than add a sysfs-link we can make this patch simpler by only moving struct blk_integrity to request_queue and leave integrity_kobj where it is in gendisk. Also undo the conversion of blk_integrity apis take a request_queue. Through this simplification I also noticed that I had broken blk_integrity_compare() Here's the much smaller v3, and I also refreshed for-4.4/blk-integrity 8<----- Subject: block: move blk_integrity to request_queue From: Dan Williams A trace like the following proceeds a crash in bio_integrity_process() when it goes to use an already freed blk_integrity profile. BUG: unable to handle kernel paging request at ffff8800d31b10d8 IP: [] 0xffff8800d31b10d8 PGD 2f65067 PUD 21fffd067 PMD 80000000d30001e3 Oops: 0011 [#1] SMP Dumping ftrace buffer: --------------------------------- ndctl-2222 2.... 44526245us : disk_release: pmem1s systemd--2223 4.... 44573945us : bio_integrity_endio: pmem1s <...>-409 4.... 44574005us : bio_integrity_process: pmem1s --------------------------------- [..] Call Trace: [] ? bio_integrity_process+0x159/0x2d0 [] bio_integrity_verify_fn+0x36/0x60 [] process_one_work+0x1cc/0x4e0 Given that a request_queue is pinned while i/o is in flight and that a gendisk is allowed to have a shorter lifetime, move blk_integrity to request_queue to satisfy requests arriving after the gendisk has been torn down. Cc: Christoph Hellwig Cc: Martin K. Petersen [martin: fix the CONFIG_BLK_DEV_INTEGRITY=n case] Tested-by: Ross Zwisler Signed-off-by: Dan Williams --- block/blk-integrity.c | 14 +++++++------- drivers/nvme/host/pci.c | 2 +- include/linux/blkdev.h | 6 +++++- include/linux/genhd.h | 1 - 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/block/blk-integrity.c b/block/blk-integrity.c index 4615a3386798..5d339ae64d56 100644 --- a/block/blk-integrity.c +++ b/block/blk-integrity.c @@ -142,8 +142,8 @@ EXPORT_SYMBOL(blk_rq_map_integrity_sg); */ int blk_integrity_compare(struct gendisk *gd1, struct gendisk *gd2) { - struct blk_integrity *b1 = &gd1->integrity; - struct blk_integrity *b2 = &gd2->integrity; + struct blk_integrity *b1 = &gd1->queue->integrity; + struct blk_integrity *b2 = &gd2->queue->integrity; if (!b1->profile && !b2->profile) return 0; @@ -246,7 +246,7 @@ static ssize_t integrity_attr_show(struct kobject *kobj, struct attribute *attr, char *page) { struct gendisk *disk = container_of(kobj, struct gendisk, integrity_kobj); - struct blk_integrity *bi = &disk->integrity; + struct blk_integrity *bi = &disk->queue->integrity; struct integrity_sysfs_entry *entry = container_of(attr, struct integrity_sysfs_entry, attr); @@ -258,7 +258,7 @@ static ssize_t integrity_attr_store(struct kobject *kobj, size_t count) { struct gendisk *disk = container_of(kobj, struct gendisk, integrity_kobj); - struct blk_integrity *bi = &disk->integrity; + struct blk_integrity *bi = &disk->queue->integrity; struct integrity_sysfs_entry *entry = container_of(attr, struct integrity_sysfs_entry, attr); ssize_t ret = 0; @@ -397,7 +397,7 @@ static struct kobj_type integrity_ktype = { */ void blk_integrity_register(struct gendisk *disk, struct blk_integrity *template) { - struct blk_integrity *bi = &disk->integrity; + struct blk_integrity *bi = &disk->queue->integrity; bi->flags = BLK_INTEGRITY_VERIFY | BLK_INTEGRITY_GENERATE | template->flags; @@ -420,13 +420,13 @@ EXPORT_SYMBOL(blk_integrity_register); void blk_integrity_unregister(struct gendisk *disk) { blk_integrity_revalidate(disk); - memset(&disk->integrity, 0, sizeof(struct blk_integrity)); + memset(&disk->queue->integrity, 0, sizeof(struct blk_integrity)); } EXPORT_SYMBOL(blk_integrity_unregister); void blk_integrity_revalidate(struct gendisk *disk) { - struct blk_integrity *bi = &disk->integrity; + struct blk_integrity *bi = &disk->queue->integrity; if (!(disk->flags & GENHD_FL_UP)) return; diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index 5578de67f406..2a39314fc61a 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c @@ -538,7 +538,7 @@ static void nvme_dif_remap(struct request *req, virt = bip_get_seed(bip); phys = nvme_block_nr(ns, blk_rq_pos(req)); nlb = (blk_rq_bytes(req) >> ns->lba_shift); - ts = ns->disk->integrity.tuple_size; + ts = ns->disk->queue->integrity.tuple_size; for (i = 0; i < nlb; i++, virt++, phys++) { pi = (struct t10_pi_tuple *)p; diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 3e0465257d68..cf57884db4b7 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -369,6 +369,10 @@ struct request_queue { */ struct kobject mq_kobj; +#ifdef CONFIG_BLK_DEV_INTEGRITY + struct blk_integrity integrity; +#endif /* CONFIG_BLK_DEV_INTEGRITY */ + #ifdef CONFIG_PM struct device *dev; int rpm_status; @@ -1481,7 +1485,7 @@ extern bool blk_integrity_merge_bio(struct request_queue *, struct request *, static inline struct blk_integrity *blk_get_integrity(struct gendisk *disk) { - struct blk_integrity *bi = &disk->integrity; + struct blk_integrity *bi = &disk->queue->integrity; if (!bi->profile) return NULL; diff --git a/include/linux/genhd.h b/include/linux/genhd.h index 82f4911e0ad8..847cc1d91634 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h @@ -210,7 +210,6 @@ struct gendisk { atomic_t sync_io; /* RAID */ struct disk_events *ev; #ifdef CONFIG_BLK_DEV_INTEGRITY - struct blk_integrity integrity; struct kobject integrity_kobj; #endif /* CONFIG_BLK_DEV_INTEGRITY */ int node_id;