From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bart Van Assche Subject: Re: [PATCH v3 3/4] sd: Make synchronize cache upon shutdown asynchronous Date: Wed, 26 Apr 2017 18:53:59 +0000 Message-ID: <1493232838.2632.9.camel@sandisk.com> References: <20170417173436.15555-1-bart.vanassche@sandisk.com> <20170417173436.15555-4-bart.vanassche@sandisk.com> <20170418144429.GA28949@bblock-ThinkPad-W530> <1492530984.3306.25.camel@HansenPartnership.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="_004_149323283826329camelsandiskcom_" Return-path: Received: from esa6.hgst.iphmx.com ([216.71.154.45]:28953 "EHLO esa6.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932169AbdDZSyF (ORCPT ); Wed, 26 Apr 2017 14:54:05 -0400 In-Reply-To: <1492530984.3306.25.camel@HansenPartnership.com> Content-Language: en-US Sender: linux-scsi-owner@vger.kernel.org List-Id: linux-scsi@vger.kernel.org To: "James.Bottomley@HansenPartnership.com" , "bblock@linux.vnet.ibm.com" Cc: "linux-scsi@vger.kernel.org" , "maxg@mellanox.com" , "israelr@mellanox.com" , "hare@suse.de" , "martin.petersen@oracle.com" --_004_149323283826329camelsandiskcom_ Content-Type: text/plain; charset="iso-8859-1" Content-ID: Content-Transfer-Encoding: quoted-printable On Tue, 2017-04-18 at 08:56 -0700, James Bottomley wrote: > The priority has got to be the removal we've been ordered to do rather > than waiting around to see if the transport comes back so we can send a > final flush. >=20 > How about this approach. It goes straight to DEL if the device is > blocked (skipping CANCEL). This means that all the commands issued in=20 > ->shutdown will error in the mid-layer, thus making the removal proceed > without being stopped. >=20 > James >=20 > --- >=20 > diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c > index e5a2d590a104..31171204cfd1 100644 > --- a/drivers/scsi/scsi_lib.c > +++ b/drivers/scsi/scsi_lib.c > @@ -2611,7 +2611,6 @@ scsi_device_set_state(struct scsi_device *sdev, enu= m scsi_device_state state) > case SDEV_QUIESCE: > case SDEV_OFFLINE: > case SDEV_TRANSPORT_OFFLINE: > - case SDEV_BLOCK: > break; > default: > goto illegal; > @@ -2625,6 +2624,7 @@ scsi_device_set_state(struct scsi_device *sdev, enu= m scsi_device_state state) > case SDEV_OFFLINE: > case SDEV_TRANSPORT_OFFLINE: > case SDEV_CANCEL: > + case SDEV_BLOCK: > case SDEV_CREATED_BLOCK: > break; > default: > diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c > index 82dfe07b1d47..788309e307e9 100644 > --- a/drivers/scsi/scsi_sysfs.c > +++ b/drivers/scsi/scsi_sysfs.c > @@ -1282,8 +1282,14 @@ void __scsi_remove_device(struct scsi_device *sdev= ) > return; > =20 > if (sdev->is_visible) { > + /* > + * If blocked, we go straight to DEL so any commands > + * issued during the driver shutdown (like sync cache) > + * are errored > + */ > if (scsi_device_set_state(sdev, SDEV_CANCEL) !=3D 0) > - return; > + if (scsi_device_set_state(sdev, SDEV_DEL) !=3D 0) > + return; > =20 > bsg_unregister_queue(sdev->request_queue); > device_unregister(&sdev->sdev_dev); >=20 >=20 Hello James, How about modifying the above patch by adding a mutex to avoid that the tra= nsition to SDEV_DEL and blocking the request queue happen in the wrong order, e.g. = as in the attached three patches? Thanks, Bart.= --_004_149323283826329camelsandiskcom_ Content-Type: text/x-patch; name="0001-Introduce-scsi_start_queue.patch" Content-Description: 0001-Introduce-scsi_start_queue.patch Content-Disposition: attachment; filename="0001-Introduce-scsi_start_queue.patch"; size=2756; creation-date="Wed, 26 Apr 2017 18:53:59 GMT"; modification-date="Wed, 26 Apr 2017 18:53:59 GMT" Content-ID: <82A6FC2ECFC96C4895B63CE74DA4D85A@namprd04.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSBjMzk1Y2UyYWFmNmQ4YTY0NDMxMWY0YzU1ZGZhNmFhNTYwYTkzMjQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCYXJ0IFZhbiBBc3NjaGUgPGJhcnQudmFuYXNzY2hlQHNhbmRp c2suY29tPgpEYXRlOiBUdWUsIDI4IE1hciAyMDE3IDE0OjAwOjE3IC0wNzAwClN1YmplY3Q6IFtQ QVRDSCAxLzNdIEludHJvZHVjZSBzY3NpX3N0YXJ0X3F1ZXVlKCkKClRoaXMgcGF0Y2ggZG9lcyBu b3QgY2hhbmdlIGFueSBmdW5jdGlvbmFsaXR5LgoKU2lnbmVkLW9mZi1ieTogQmFydCBWYW4gQXNz Y2hlIDxiYXJ0LnZhbmFzc2NoZUBzYW5kaXNrLmNvbT4KQ2M6IElzcmFlbCBSdWtzaGluIDxpc3Jh ZWxyQG1lbGxhbm94LmNvbT4KQ2M6IE1heCBHdXJ0b3ZveSA8bWF4Z0BtZWxsYW5veC5jb20+CkNj OiBIYW5uZXMgUmVpbmVja2UgPGhhcmVAc3VzZS5kZT4KQ2M6IEJlbmphbWluIEJsb2NrIDxiYmxv Y2tAbGludXgudm5ldC5pYm0uY29tPgotLS0KIGRyaXZlcnMvc2NzaS9zY3NpX2xpYi5jICB8IDI1 ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIGRyaXZlcnMvc2NzaS9zY3NpX3ByaXYuaCB8ICAx ICsKIDIgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Njc2lfbGliLmMgYi9kcml2ZXJzL3Njc2kvc2NzaV9s aWIuYwppbmRleCBlZWNjMDA1MDk5YjIuLmZmYTZlNjEyOTlhOSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9zY3NpL3Njc2lfbGliLmMKKysrIGIvZHJpdmVycy9zY3NpL3Njc2lfbGliLmMKQEAgLTI5ODcs NiArMjk4NywyMCBAQCBzY3NpX2ludGVybmFsX2RldmljZV9ibG9jayhzdHJ1Y3Qgc2NzaV9kZXZp Y2UgKnNkZXYsIGJvb2wgd2FpdCkKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHNjc2lfaW50ZXJuYWxf ZGV2aWNlX2Jsb2NrKTsKICAKK3ZvaWQgc2NzaV9zdGFydF9xdWV1ZShzdHJ1Y3Qgc2NzaV9kZXZp Y2UgKnNkZXYpCit7CisJc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBzZGV2LT5yZXF1ZXN0X3F1 ZXVlOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlpZiAocS0+bXFfb3BzKSB7CisJCWJsa19t cV9zdGFydF9zdG9wcGVkX2h3X3F1ZXVlcyhxLCBmYWxzZSk7CisJfSBlbHNlIHsKKwkJc3Bpbl9s b2NrX2lycXNhdmUocS0+cXVldWVfbG9jaywgZmxhZ3MpOworCQlibGtfc3RhcnRfcXVldWUocSk7 CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUocS0+cXVldWVfbG9jaywgZmxhZ3MpOworCX0KK30K KwogLyoqCiAgKiBzY3NpX2ludGVybmFsX2RldmljZV91bmJsb2NrIC0gcmVzdW1lIGEgZGV2aWNl IGFmdGVyIGEgYmxvY2sgcmVxdWVzdAogICogQHNkZXY6CWRldmljZSB0byByZXN1bWUKQEAgLTMw MDcsOSArMzAyMSw2IEBAIGludAogc2NzaV9pbnRlcm5hbF9kZXZpY2VfdW5ibG9jayhzdHJ1Y3Qg c2NzaV9kZXZpY2UgKnNkZXYsCiAJCQkgICAgIGVudW0gc2NzaV9kZXZpY2Vfc3RhdGUgbmV3X3N0 YXRlKQogewotCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gc2Rldi0+cmVxdWVzdF9xdWV1ZTsg Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKLQogCS8qCiAJICogVHJ5IHRvIHRyYW5zaXRpb24gdGhl IHNjc2kgZGV2aWNlIHRvIFNERVZfUlVOTklORyBvciBvbmUgb2YgdGhlCiAJICogb2ZmbGluZWQg c3RhdGVzIGFuZCBnb29zZSB0aGUgZGV2aWNlIHF1ZXVlIGlmIHN1Y2Nlc3NmdWwuCkBAIC0zMDI3 LDEzICszMDM4LDcgQEAgc2NzaV9pbnRlcm5hbF9kZXZpY2VfdW5ibG9jayhzdHJ1Y3Qgc2NzaV9k ZXZpY2UgKnNkZXYsCiAJCSBzZGV2LT5zZGV2X3N0YXRlICE9IFNERVZfT0ZGTElORSkKIAkJcmV0 dXJuIC1FSU5WQUw7CiAKLQlpZiAocS0+bXFfb3BzKSB7Ci0JCWJsa19tcV9zdGFydF9zdG9wcGVk X2h3X3F1ZXVlcyhxLCBmYWxzZSk7Ci0JfSBlbHNlIHsKLQkJc3Bpbl9sb2NrX2lycXNhdmUocS0+ cXVldWVfbG9jaywgZmxhZ3MpOwotCQlibGtfc3RhcnRfcXVldWUocSk7Ci0JCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUocS0+cXVldWVfbG9jaywgZmxhZ3MpOwotCX0KKwlzY3NpX3N0YXJ0X3F1ZXVl KHNkZXYpOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2NzaV9w cml2LmggYi9kcml2ZXJzL3Njc2kvc2NzaV9wcml2LmgKaW5kZXggZjExYmQxMDJkNmQ1Li5jNzYy OWUzMWE3NWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zY3NpX3ByaXYuaAorKysgYi9kcml2 ZXJzL3Njc2kvc2NzaV9wcml2LmgKQEAgLTg5LDYgKzg5LDcgQEAgZXh0ZXJuIHZvaWQgc2NzaV9y dW5faG9zdF9xdWV1ZXMoc3RydWN0IFNjc2lfSG9zdCAqc2hvc3QpOwogZXh0ZXJuIHZvaWQgc2Nz aV9yZXF1ZXVlX3J1bl9xdWV1ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwogZXh0ZXJuIHN0 cnVjdCByZXF1ZXN0X3F1ZXVlICpzY3NpX2FsbG9jX3F1ZXVlKHN0cnVjdCBzY3NpX2RldmljZSAq c2Rldik7CiBleHRlcm4gc3RydWN0IHJlcXVlc3RfcXVldWUgKnNjc2lfbXFfYWxsb2NfcXVldWUo c3RydWN0IHNjc2lfZGV2aWNlICpzZGV2KTsKK2V4dGVybiB2b2lkIHNjc2lfc3RhcnRfcXVldWUo c3RydWN0IHNjc2lfZGV2aWNlICpzZGV2KTsKIGV4dGVybiBpbnQgc2NzaV9tcV9zZXR1cF90YWdz KHN0cnVjdCBTY3NpX0hvc3QgKnNob3N0KTsKIGV4dGVybiB2b2lkIHNjc2lfbXFfZGVzdHJveV90 YWdzKHN0cnVjdCBTY3NpX0hvc3QgKnNob3N0KTsKIGV4dGVybiBpbnQgc2NzaV9pbml0X3F1ZXVl KHZvaWQpOwotLSAKMi4xMi4yCgo= --_004_149323283826329camelsandiskcom_ Content-Type: text/x-patch; name="0002-Protect-SCSI-device-state-changes-with-a-mutex.patch" Content-Description: 0002-Protect-SCSI-device-state-changes-with-a-mutex.patch Content-Disposition: attachment; filename="0002-Protect-SCSI-device-state-changes-with-a-mutex.patch"; size=6756; creation-date="Wed, 26 Apr 2017 18:53:59 GMT"; modification-date="Wed, 26 Apr 2017 18:53:59 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSBmMWEzNGRjYzE5ZmQ2MjRlY2E5ZmQ5OGMzNmE3NDU1NWY0NzQ2ZmY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCYXJ0IFZhbiBBc3NjaGUgPGJhcnQudmFuYXNzY2hlQHNhbmRp c2suY29tPgpEYXRlOiBXZWQsIDI2IEFwciAyMDE3IDA5OjI0OjA4IC0wNzAwClN1YmplY3Q6IFtQ QVRDSCAyLzNdIFByb3RlY3QgU0NTSSBkZXZpY2Ugc3RhdGUgY2hhbmdlcyB3aXRoIGEgbXV0ZXgK CkVuYWJsZSB0aGlzIG1lY2hhbmlzbSBmb3IgYWxsIHNjc2lfdGFyZ2V0XypibG9jaygpIGNhbGxl cnMgYnV0IG5vdApmb3IgdGhlIHNjc2lfaW50ZXJuYWxfZGV2aWNlX3VuYmxvY2soKSBjYWxscyBm cm9tIHRoZSBtcHQzc2FzIGRyaXZlcgpiZWNhdXNlIHRoYXQgZHJpdmVyIGNhbiBjYWxsIHNjc2lf aW50ZXJuYWxfZGV2aWNlX3VuYmxvY2soKSBmcm9tCmF0b21pYyBjb250ZXh0LgoKU2lnbmVkLW9m Zi1ieTogQmFydCBWYW4gQXNzY2hlIDxiYXJ0LnZhbmFzc2NoZUBzYW5kaXNrLmNvbT4KLS0tCiBk cml2ZXJzL3Njc2kvbXB0M3Nhcy9tcHQzc2FzX3Njc2loLmMgfCAgNCArKy0tCiBkcml2ZXJzL3Nj c2kvc2NzaV9saWIuYyAgICAgICAgICAgICAgfCAzNSArKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLQogZHJpdmVycy9zY3NpL3Njc2lfc2Nhbi5jICAgICAgICAgICAgIHwgIDEgKwog ZHJpdmVycy9zY3NpL3Njc2lfc3lzZnMuYyAgICAgICAgICAgIHwgMTEgKysrKysrKysrKy0KIGlu Y2x1ZGUvc2NzaS9zY3NpX2RldmljZS5oICAgICAgICAgICB8ICAzICsrLQogNSBmaWxlcyBjaGFu Z2VkLCA0MiBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL3Njc2kvbXB0M3Nhcy9tcHQzc2FzX3Njc2loLmMgYi9kcml2ZXJzL3Njc2kvbXB0M3Nhcy9t cHQzc2FzX3Njc2loLmMKaW5kZXggOTE5YmEyYmIxNWYxLi4wZWRmNWU3Y2QwYWIgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvc2NzaS9tcHQzc2FzL21wdDNzYXNfc2NzaWguYworKysgYi9kcml2ZXJzL3Nj c2kvbXB0M3Nhcy9tcHQzc2FzX3Njc2loLmMKQEAgLTI4ODMsNyArMjg4Myw3IEBAIF9zY3NpaF9p bnRlcm5hbF9kZXZpY2VfdW5ibG9jayhzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYsCiAJc2Rldl9w cmludGsoS0VSTl9XQVJOSU5HLCBzZGV2LCAiZGV2aWNlX3VuYmxvY2sgYW5kIHNldHRpbmcgdG8g cnVubmluZywgIgogCSAgICAiaGFuZGxlKDB4JTA0eClcbiIsIHNhc19kZXZpY2VfcHJpdl9kYXRh LT5zYXNfdGFyZ2V0LT5oYW5kbGUpOwogCXNhc19kZXZpY2VfcHJpdl9kYXRhLT5ibG9jayA9IDA7 Ci0JciA9IHNjc2lfaW50ZXJuYWxfZGV2aWNlX3VuYmxvY2soc2RldiwgU0RFVl9SVU5OSU5HKTsK KwlyID0gc2NzaV9pbnRlcm5hbF9kZXZpY2VfdW5ibG9jayhzZGV2LCBTREVWX1JVTk5JTkcsIGZh bHNlKTsKIAlpZiAociA9PSAtRUlOVkFMKSB7CiAJCS8qIFRoZSBkZXZpY2UgaGFzIGJlZW4gc2V0 IHRvIFNERVZfUlVOTklORyBieSBTRCBsYXllciBkdXJpbmcKIAkJICogZGV2aWNlIGFkZGl0aW9u IGJ1dCB0aGUgcmVxdWVzdCBxdWV1ZSBpcyBzdGlsbCBzdG9wcGVkIGJ5CkBAIC0yOTAyLDcgKzI5 MDIsNyBAQCBfc2NzaWhfaW50ZXJuYWxfZGV2aWNlX3VuYmxvY2soc3RydWN0IHNjc2lfZGV2aWNl ICpzZGV2LAogCQkJICAgIHIsIHNhc19kZXZpY2VfcHJpdl9kYXRhLT5zYXNfdGFyZ2V0LT5oYW5k bGUpOwogCiAJCXNhc19kZXZpY2VfcHJpdl9kYXRhLT5ibG9jayA9IDA7Ci0JCXIgPSBzY3NpX2lu dGVybmFsX2RldmljZV91bmJsb2NrKHNkZXYsIFNERVZfUlVOTklORyk7CisJCXIgPSBzY3NpX2lu dGVybmFsX2RldmljZV91bmJsb2NrKHNkZXYsIFNERVZfUlVOTklORywgZmFsc2UpOwogCQlpZiAo cikKIAkJCXNkZXZfcHJpbnRrKEtFUk5fV0FSTklORywgc2RldiwgInJldHJpZWQgZGV2aWNlX3Vu YmxvY2siCiAJCQkgICAgIiBmYWlsZWQgd2l0aCByZXR1cm4oJWQpIGZvciBoYW5kbGUoMHglMDR4 KVxuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpX2xpYi5jIGIvZHJpdmVycy9zY3Np L3Njc2lfbGliLmMKaW5kZXggZmZhNmU2MTI5OWE5Li42YWI3YzYzMTEwYjEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvc2NzaS9zY3NpX2xpYi5jCisrKyBiL2RyaXZlcnMvc2NzaS9zY3NpX2xpYi5jCkBA IC0yOTU1LDE0ICsyOTU1LDE2IEBAIHNjc2lfaW50ZXJuYWxfZGV2aWNlX2Jsb2NrKHN0cnVjdCBz Y3NpX2RldmljZSAqc2RldiwgYm9vbCB3YWl0KQogewogCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx ID0gc2Rldi0+cmVxdWVzdF9xdWV1ZTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwotCWludCBlcnIg PSAwOworCWludCBlcnI7CisKKwlpZiAod2FpdCkKKwkJbXV0ZXhfbG9jaygmc2Rldi0+c3RhdGVf bXV0ZXgpOwogCiAJZXJyID0gc2NzaV9kZXZpY2Vfc2V0X3N0YXRlKHNkZXYsIFNERVZfQkxPQ0sp OwogCWlmIChlcnIpIHsKIAkJZXJyID0gc2NzaV9kZXZpY2Vfc2V0X3N0YXRlKHNkZXYsIFNERVZf Q1JFQVRFRF9CTE9DSyk7Ci0KIAkJaWYgKGVycikKLQkJCXJldHVybiBlcnI7CisJCQlnb3RvIHVu bG9jazsKIAl9CiAKIAkvKiAKQEAgLTI5ODMsNyArMjk4NSwxMSBAQCBzY3NpX2ludGVybmFsX2Rl dmljZV9ibG9jayhzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYsIGJvb2wgd2FpdCkKIAkJCXNjc2lf d2FpdF9mb3JfcXVldWVjb21tYW5kKHNkZXYpOwogCX0KIAotCXJldHVybiAwOwordW5sb2NrOgor CWlmICh3YWl0KQorCQltdXRleF91bmxvY2soJnNkZXYtPnN0YXRlX211dGV4KTsKKworCXJldHVy biBlcnI7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChzY3NpX2ludGVybmFsX2RldmljZV9ibG9jayk7 CiAgCkBAIC0zMDA1LDYgKzMwMTEsOCBAQCB2b2lkIHNjc2lfc3RhcnRfcXVldWUoc3RydWN0IHNj c2lfZGV2aWNlICpzZGV2KQogICogc2NzaV9pbnRlcm5hbF9kZXZpY2VfdW5ibG9jayAtIHJlc3Vt ZSBhIGRldmljZSBhZnRlciBhIGJsb2NrIHJlcXVlc3QKICAqIEBzZGV2OglkZXZpY2UgdG8gcmVz dW1lCiAgKiBAbmV3X3N0YXRlOglzdGF0ZSB0byBzZXQgZGV2aWNlcyB0byBhZnRlciB1bmJsb2Nr aW5nCisgKiBAd2FpdDoJd2hldGhlciBvciBub3QgdG8gd2FpdCB1bnRpbCBjb25jdXJyZW50IHN0 YXRlIGNoYW5nZXMgaGF2ZQorICoJCWZpbmlzaGVkCiAgKgogICogQ2FsbGVkIGJ5IHNjc2kgbGxk J3Mgb3IgdGhlIG1pZGxheWVyIHRvIHJlc3RhcnQgdGhlIGRldmljZSBxdWV1ZQogICogZm9yIHRo ZSBwcmV2aW91c2x5IHN1c3BlbmRlZCBzY3NpIGRldmljZS4gIENhbGxlZCBmcm9tIGludGVycnVw dCBvcgpAQCAtMzAxOSw4ICszMDI3LDEzIEBAIHZvaWQgc2NzaV9zdGFydF9xdWV1ZShzdHJ1Y3Qg c2NzaV9kZXZpY2UgKnNkZXYpCiAgKi8KIGludAogc2NzaV9pbnRlcm5hbF9kZXZpY2VfdW5ibG9j ayhzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYsCi0JCQkgICAgIGVudW0gc2NzaV9kZXZpY2Vfc3Rh dGUgbmV3X3N0YXRlKQorCQkJICAgICBlbnVtIHNjc2lfZGV2aWNlX3N0YXRlIG5ld19zdGF0ZSwg Ym9vbCB3YWl0KQogeworCWludCByZXQgPSAtRUlOVkFMOworCisJaWYgKHdhaXQpCisJCW11dGV4 X2xvY2soJnNkZXYtPnN0YXRlX211dGV4KTsKKwogCS8qCiAJICogVHJ5IHRvIHRyYW5zaXRpb24g dGhlIHNjc2kgZGV2aWNlIHRvIFNERVZfUlVOTklORyBvciBvbmUgb2YgdGhlCiAJICogb2ZmbGlu ZWQgc3RhdGVzIGFuZCBnb29zZSB0aGUgZGV2aWNlIHF1ZXVlIGlmIHN1Y2Nlc3NmdWwuCkBAIC0z MDM2LDExICszMDQ5LDE2IEBAIHNjc2lfaW50ZXJuYWxfZGV2aWNlX3VuYmxvY2soc3RydWN0IHNj c2lfZGV2aWNlICpzZGV2LAogCQkJc2Rldi0+c2Rldl9zdGF0ZSA9IFNERVZfQ1JFQVRFRDsKIAl9 IGVsc2UgaWYgKHNkZXYtPnNkZXZfc3RhdGUgIT0gU0RFVl9DQU5DRUwgJiYKIAkJIHNkZXYtPnNk ZXZfc3RhdGUgIT0gU0RFVl9PRkZMSU5FKQotCQlyZXR1cm4gLUVJTlZBTDsKKwkJZ290byB1bmxv Y2s7CiAKKwlyZXQgPSAwOwogCXNjc2lfc3RhcnRfcXVldWUoc2Rldik7CiAKLQlyZXR1cm4gMDsK K3VubG9jazoKKwlpZiAod2FpdCkKKwkJbXV0ZXhfdW5sb2NrKCZzZGV2LT5zdGF0ZV9tdXRleCk7 CisKKwlyZXR1cm4gcmV0OwogfQogRVhQT1JUX1NZTUJPTF9HUEwoc2NzaV9pbnRlcm5hbF9kZXZp Y2VfdW5ibG9jayk7CiAKQEAgLTMwNzMsNyArMzA5MSw4IEBAIEVYUE9SVF9TWU1CT0xfR1BMKHNj c2lfdGFyZ2V0X2Jsb2NrKTsKIHN0YXRpYyB2b2lkCiBkZXZpY2VfdW5ibG9jayhzdHJ1Y3Qgc2Nz aV9kZXZpY2UgKnNkZXYsIHZvaWQgKmRhdGEpCiB7Ci0Jc2NzaV9pbnRlcm5hbF9kZXZpY2VfdW5i bG9jayhzZGV2LCAqKGVudW0gc2NzaV9kZXZpY2Vfc3RhdGUgKilkYXRhKTsKKwlzY3NpX2ludGVy bmFsX2RldmljZV91bmJsb2NrKHNkZXYsICooZW51bSBzY3NpX2RldmljZV9zdGF0ZSAqKWRhdGEs CisJCQkJICAgICB0cnVlKTsKIH0KIAogc3RhdGljIGludApkaWZmIC0tZ2l0IGEvZHJpdmVycy9z Y3NpL3Njc2lfc2Nhbi5jIGIvZHJpdmVycy9zY3NpL3Njc2lfc2Nhbi5jCmluZGV4IDZmNzEyOGY0 OWMzMC4uNmY0YmU2ZTI3NzdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2NzaV9zY2FuLmMK KysrIGIvZHJpdmVycy9zY3NpL3Njc2lfc2Nhbi5jCkBAIC0yMzEsNiArMjMxLDcgQEAgc3RhdGlj IHN0cnVjdCBzY3NpX2RldmljZSAqc2NzaV9hbGxvY19zZGV2KHN0cnVjdCBzY3NpX3RhcmdldCAq c3RhcmdldCwKIAlzZGV2LT5pZCA9IHN0YXJnZXQtPmlkOwogCXNkZXYtPmx1biA9IGx1bjsKIAlz ZGV2LT5jaGFubmVsID0gc3RhcmdldC0+Y2hhbm5lbDsKKwltdXRleF9pbml0KCZzZGV2LT5zdGF0 ZV9tdXRleCk7CiAJc2Rldi0+c2Rldl9zdGF0ZSA9IFNERVZfQ1JFQVRFRDsKIAlJTklUX0xJU1Rf SEVBRCgmc2Rldi0+c2libGluZ3MpOwogCUlOSVRfTElTVF9IRUFEKCZzZGV2LT5zYW1lX3Rhcmdl dF9zaWJsaW5ncyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2NzaV9zeXNmcy5jIGIvZHJp dmVycy9zY3NpL3Njc2lfc3lzZnMuYwppbmRleCA4MmRmZTA3YjFkNDcuLjU4OTJjZDk1YzU0NiAx MDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3Njc2lfc3lzZnMuYworKysgYi9kcml2ZXJzL3Njc2kv c2NzaV9zeXNmcy5jCkBAIC0xMjcyLDYgKzEyNzIsNyBAQCBpbnQgc2NzaV9zeXNmc19hZGRfc2Rl dihzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYpCiB2b2lkIF9fc2NzaV9yZW1vdmVfZGV2aWNlKHN0 cnVjdCBzY3NpX2RldmljZSAqc2RldikKIHsKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmc2Rldi0+ c2Rldl9nZW5kZXY7CisJaW50IHJlczsKIAogCS8qCiAJICogVGhpcyBjbGVhbnVwIHBhdGggaXMg bm90IHJlZW50cmFudCBhbmQgd2hpbGUgaXQgaXMgaW1wb3NzaWJsZQpAQCAtMTI4Miw3ICsxMjgz LDE1IEBAIHZvaWQgX19zY3NpX3JlbW92ZV9kZXZpY2Uoc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2 KQogCQlyZXR1cm47CiAKIAlpZiAoc2Rldi0+aXNfdmlzaWJsZSkgewotCQlpZiAoc2NzaV9kZXZp Y2Vfc2V0X3N0YXRlKHNkZXYsIFNERVZfQ0FOQ0VMKSAhPSAwKQorCQkvKgorCQkgKiBXYWl0IHVu dGlsIGEgY29uY3VycmVudCBzY3NpX2ludGVybmFsX3RhcmdldF9ibG9jaygpIGNhbGwKKwkJICog aGFzIGZpbmlzaGVkIGJlZm9yZSBjaGFuZ2luZyB0aGUgZGV2aWNlIHN0YXRlLgorCQkgKi8KKwkJ bXV0ZXhfbG9jaygmc2Rldi0+c3RhdGVfbXV0ZXgpOworCQlyZXMgPSBzY3NpX2RldmljZV9zZXRf c3RhdGUoc2RldiwgU0RFVl9DQU5DRUwpOworCQltdXRleF91bmxvY2soJnNkZXYtPnN0YXRlX211 dGV4KTsKKworCQlpZiAocmVzICE9IDApCiAJCQlyZXR1cm47CiAKIAkJYnNnX3VucmVnaXN0ZXJf cXVldWUoc2Rldi0+cmVxdWVzdF9xdWV1ZSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3Njc2kvc2Nz aV9kZXZpY2UuaCBiL2luY2x1ZGUvc2NzaS9zY3NpX2RldmljZS5oCmluZGV4IDA4MGM3Y2U5YmFl OC4uMjViNjQ5MDMzNjE1IDEwMDY0NAotLS0gYS9pbmNsdWRlL3Njc2kvc2NzaV9kZXZpY2UuaAor KysgYi9pbmNsdWRlL3Njc2kvc2NzaV9kZXZpY2UuaApAQCAtMjA3LDYgKzIwNyw3IEBAIHN0cnVj dCBzY3NpX2RldmljZSB7CiAJdm9pZAkJCSpoYW5kbGVyX2RhdGE7CiAKIAl1bnNpZ25lZCBjaGFy CQlhY2Nlc3Nfc3RhdGU7CisJc3RydWN0IG11dGV4CQlzdGF0ZV9tdXRleDsKIAllbnVtIHNjc2lf ZGV2aWNlX3N0YXRlIHNkZXZfc3RhdGU7CiAJdW5zaWduZWQgbG9uZwkJc2Rldl9kYXRhWzBdOwog fSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKHNpemVvZih1bnNpZ25lZCBsb25nKSkpKTsKQEAgLTQ3 NCw3ICs0NzUsNyBAQCBzdGF0aWMgaW5saW5lIGludCBzY3NpX2RldmljZV9jcmVhdGVkKHN0cnVj dCBzY3NpX2RldmljZSAqc2RldikKIAogaW50IHNjc2lfaW50ZXJuYWxfZGV2aWNlX2Jsb2NrKHN0 cnVjdCBzY3NpX2RldmljZSAqc2RldiwgYm9vbCB3YWl0KTsKIGludCBzY3NpX2ludGVybmFsX2Rl dmljZV91bmJsb2NrKHN0cnVjdCBzY3NpX2RldmljZSAqc2RldiwKLQkJCQkgZW51bSBzY3NpX2Rl dmljZV9zdGF0ZSBuZXdfc3RhdGUpOworCQkJCSBlbnVtIHNjc2lfZGV2aWNlX3N0YXRlIG5ld19z dGF0ZSwgYm9vbCB3YWl0KTsKIAogLyogYWNjZXNzb3IgZnVuY3Rpb25zIGZvciB0aGUgU0NTSSBw YXJhbWV0ZXJzICovCiBzdGF0aWMgaW5saW5lIGludCBzY3NpX2RldmljZV9zeW5jKHN0cnVjdCBz Y3NpX2RldmljZSAqc2RldikKLS0gCjIuMTIuMgoK --_004_149323283826329camelsandiskcom_ Content-Type: text/x-patch; name="0003-Make-__scsi_remove_device-go-straight-from-BLOCKED-t.patch" Content-Description: 0003-Make-__scsi_remove_device-go-straight-from-BLOCKED-t.patch Content-Disposition: attachment; filename="0003-Make-__scsi_remove_device-go-straight-from-BLOCKED-t.patch"; size=2460; creation-date="Wed, 26 Apr 2017 18:53:59 GMT"; modification-date="Wed, 26 Apr 2017 18:53:59 GMT" Content-ID: <86CF754F843574408AA92E5AE8F453A0@namprd04.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSBmNTU4YjUxOTkyMjgzN2VlYzU0MTBkZTdhZWQwNTljYjQyYzEwYjY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCYXJ0IFZhbiBBc3NjaGUgPGJhcnQudmFuYXNzY2hlQHNhbmRp c2suY29tPgpEYXRlOiBUdWUsIDE4IEFwciAyMDE3IDEwOjExOjAyIC0wNzAwClN1YmplY3Q6IFtQ QVRDSCAzLzNdIE1ha2UgX19zY3NpX3JlbW92ZV9kZXZpY2UgZ28gc3RyYWlnaHQgZnJvbSBCTE9D S0VEIHRvIERFTAoKSWYgYSBkZXZpY2UgaXMgYmxvY2tlZCwgbWFrZSBfX3Njc2lfcmVtb3ZlX2Rl dmljZSgpIGNhdXNlIGl0IHRvCnRyYW5zaXRpb24gdG8gdGhlIERFTCBzdGF0ZS4gVGhpcyBtZWFu cyB0aGF0IGFsbCB0aGUgY29tbWFuZHMKaXNzdWVkIGluIC5zaHV0ZG93bigpIHdpbGwgZXJyb3Ig aW4gdGhlIG1pZC1sYXllciwgdGh1cyBtYWtpbmcKdGhlIHJlbW92YWwgcHJvY2VlZCB3aXRob3V0 IGJlaW5nIHN0b3BwZWQuCgpUaGlzIHBhdGNoIGlzIGEgc2xpZ2h0bHkgbW9kaWZpZWQgdmVyc2lv biBvZiBhIHBhdGNoIGZyb20gSmFtZXMKQm90dG9tbGV5LgoKU2lnbmVkLW9mZi1ieTogQmFydCBW YW4gQXNzY2hlIDxiYXJ0LnZhbmFzc2NoZUBzYW5kaXNrLmNvbT4KQ2M6IEphbWVzIEJvdHRvbWxl eSA8SmFtZXMuQm90dG9tbGV5QEhhbnNlblBhcnRuZXJzaGlwLmNvbT4KQ2M6IElzcmFlbCBSdWtz aGluIDxpc3JhZWxyQG1lbGxhbm94LmNvbT4KQ2M6IE1heCBHdXJ0b3ZveSA8bWF4Z0BtZWxsYW5v eC5jb20+CkNjOiBIYW5uZXMgUmVpbmVja2UgPGhhcmVAc3VzZS5kZT4KQ2M6IEJlbmphbWluIEJs b2NrIDxiYmxvY2tAbGludXgudm5ldC5pYm0uY29tPgotLS0KIGRyaXZlcnMvc2NzaS9zY3NpX2xp Yi5jICAgfCAgMiArLQogZHJpdmVycy9zY3NpL3Njc2lfc3lzZnMuYyB8IDEzICsrKysrKysrKysr KysKIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpX2xpYi5jIGIvZHJpdmVycy9zY3NpL3Njc2lfbGli LmMKaW5kZXggNmFiN2M2MzExMGIxLi4yZTg0YmI4NWQwZTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv c2NzaS9zY3NpX2xpYi5jCisrKyBiL2RyaXZlcnMvc2NzaS9zY3NpX2xpYi5jCkBAIC0yNjExLDcg KzI2MTEsNiBAQCBzY3NpX2RldmljZV9zZXRfc3RhdGUoc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2 LCBlbnVtIHNjc2lfZGV2aWNlX3N0YXRlIHN0YXRlKQogCQljYXNlIFNERVZfUVVJRVNDRToKIAkJ Y2FzZSBTREVWX09GRkxJTkU6CiAJCWNhc2UgU0RFVl9UUkFOU1BPUlRfT0ZGTElORToKLQkJY2Fz ZSBTREVWX0JMT0NLOgogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlnb3RvIGlsbGVnYWw7CkBA IC0yNjI1LDYgKzI2MjQsNyBAQCBzY3NpX2RldmljZV9zZXRfc3RhdGUoc3RydWN0IHNjc2lfZGV2 aWNlICpzZGV2LCBlbnVtIHNjc2lfZGV2aWNlX3N0YXRlIHN0YXRlKQogCQljYXNlIFNERVZfT0ZG TElORToKIAkJY2FzZSBTREVWX1RSQU5TUE9SVF9PRkZMSU5FOgogCQljYXNlIFNERVZfQ0FOQ0VM OgorCQljYXNlIFNERVZfQkxPQ0s6CiAJCWNhc2UgU0RFVl9DUkVBVEVEX0JMT0NLOgogCQkJYnJl YWs7CiAJCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2NzaV9zeXNmcy5jIGIv ZHJpdmVycy9zY3NpL3Njc2lfc3lzZnMuYwppbmRleCA1ODkyY2Q5NWM1NDYuLjhiOWI2YWFmNmE5 ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3Njc2lfc3lzZnMuYworKysgYi9kcml2ZXJzL3Nj c2kvc2NzaV9zeXNmcy5jCkBAIC0xMjg4LDcgKzEyODgsMjAgQEAgdm9pZCBfX3Njc2lfcmVtb3Zl X2RldmljZShzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYpCiAJCSAqIGhhcyBmaW5pc2hlZCBiZWZv cmUgY2hhbmdpbmcgdGhlIGRldmljZSBzdGF0ZS4KIAkJICovCiAJCW11dGV4X2xvY2soJnNkZXYt PnN0YXRlX211dGV4KTsKKwkJLyoKKwkJICogSWYgYmxvY2tlZCwgd2UgZ28gc3RyYWlnaHQgdG8g REVMIGFuZCByZXN0YXJ0IHRoZSBxdWV1ZSBzbworCQkgKiBhbnkgY29tbWFuZHMgaXNzdWVkIGR1 cmluZyBkcml2ZXIgc2h1dGRvd24gKGxpa2Ugc3luYworCQkgKiBjYWNoZSkgYXJlIGVycm9yZWQg aW1tZWRpYXRlbHkuCisJCSAqLwogCQlyZXMgPSBzY3NpX2RldmljZV9zZXRfc3RhdGUoc2Rldiwg U0RFVl9DQU5DRUwpOworCQlpZiAocmVzICE9IDApIHsKKwkJCXJlcyA9IHNjc2lfZGV2aWNlX3Nl dF9zdGF0ZShzZGV2LCBTREVWX0RFTCk7CisJCQlpZiAocmVzID09IDApIHsKKwkJCQlzY3NpX3N0 YXJ0X3F1ZXVlKHNkZXYpOworCQkJCXNkZXZfcHJpbnRrKEtFUk5fREVCVUcsIHNkZXYsCisJCQkJ ICAgICJDaGFuZ2VkIHN0YXRlIGZyb20gQkxPQ0tFRCB0byBERUxcbiIpOworCQkJfQorCQl9CiAJ CW11dGV4X3VubG9jaygmc2Rldi0+c3RhdGVfbXV0ZXgpOwogCiAJCWlmIChyZXMgIT0gMCkKLS0g CjIuMTIuMgoK --_004_149323283826329camelsandiskcom_--