From: Bart Van Assche <Bart.VanAssche@wdc.com>
To: "ming.lei@redhat.com" <ming.lei@redhat.com>
Cc: "linux-block@vger.kernel.org" <linux-block@vger.kernel.org>,
"jthumshirn@suse.de" <jthumshirn@suse.de>,
"linux-raid@vger.kernel.org" <linux-raid@vger.kernel.org>,
"hch@lst.de" <hch@lst.de>,
"martin.petersen@oracle.com" <martin.petersen@oracle.com>,
"axboe@kernel.dk" <axboe@kernel.dk>,
"oleksandr@natalenko.name" <oleksandr@natalenko.name>,
"hare@suse.com" <hare@suse.com>,
"shli@kernel.org" <shli@kernel.org>
Subject: Re: [PATCH v4 1/7] md: Make md resync and reshape threads freezable
Date: Wed, 27 Sep 2017 03:12:47 +0000 [thread overview]
Message-ID: <1506481915.2822.9.camel@wdc.com> (raw)
In-Reply-To: <20170926145919.GC31449@ming.t460p>
T24gVHVlLCAyMDE3LTA5LTI2IGF0IDIyOjU5ICswODAwLCBNaW5nIExlaSB3cm90ZToNCj4gT24g
VHVlLCBTZXAgMjYsIDIwMTcgYXQgMDI6NDI6MDdQTSArMDAwMCwgQmFydCBWYW4gQXNzY2hlIHdy
b3RlOg0KPiA+IE9uIFR1ZSwgMjAxNy0wOS0yNiBhdCAxOToxNyArMDgwMCwgTWluZyBMZWkgd3Jv
dGU6DQo+ID4gPiBKdXN0IHRlc3QgdGhpcyBwYXRjaCBhIGJpdCBhbmQgdGhlIGZvbGxvd2luZyBm
YWlsdXJlIG9mIGZyZWV6aW5nIHRhc2sNCj4gPiA+IGlzIHRyaWdnZXJlZCBkdXJpbmcgc3VzcGVu
ZDogWyAuLi4gXQ0KPiA+IA0KPiA+IFdoYXQga2VybmVsIHZlcnNpb24gZGlkIHlvdSBzdGFydCBm
cm9tIGFuZCB3aGljaCBwYXRjaGVzIHdlcmUgYXBwbGllZCBvbiB0b3Agb2YNCj4gPiB0aGF0IGtl
cm5lbD8gT25seSBwYXRjaCAxLzcgb3IgYWxsIHNldmVuIHBhdGNoZXM/IFdoYXQgc3RvcmFnZSBj
b25maWd1cmF0aW9uIGRpZA0KPiANCj4gSXQgaXMgdjQuMTQtcmMxKywgYW5kIHRvcCBjb21taXQg
aXMgOGQ5M2M3YTQzMTU3LCB3aXRoIGFsbCB5b3VyIDcgcGF0Y2hlcw0KPiBhcHBsaWVkLg0KPiAN
Cj4gPiB5b3UgdXNlIGluIHlvdXIgdGVzdCBhbmQgd2hhdCBjb21tYW5kKHMpIGRpZCB5b3UgdXNl
IHRvIHRyaWdnZXIgc3VzcGVuZD8NCj4gDQo+IEZvbGxvd3MgbXkgcG0gdGVzdCBzY3JpcHQ6DQo+
IA0KPiAJIyEvYmluL3NoDQo+IAkNCj4gCWVjaG8gY2hlY2sgPiAvc3lzL2Jsb2NrL21kMTI3L21k
L3N5bmNfYWN0aW9uDQo+IAkNCj4gCW1rZnMuZXh0NCAtRiAvZGV2L21kMTI3DQo+IAkNCj4gCW1v
dW50IC9kZXYvbWQwIC9tbnQvZGF0YQ0KPiAJDQo+IAlkZCBpZj0vZGV2L3plcm8gb2Y9L21udC9k
YXRhL2QxLmltZyBicz00ayBjb3VudD0xMjhrJg0KPiAJDQo+IAllY2hvIDkgPiAvcHJvYy9zeXMv
a2VybmVsL3ByaW50aw0KPiAJZWNobyBkZXZpY2VzID4gL3N5cy9wb3dlci9wbV90ZXN0DQo+IAll
Y2hvIG1lbSA+IC9zeXMvcG93ZXIvc3RhdGUNCj4gCQ0KPiAJd2FpdA0KPiAJdW1vdW50IC9tbnQv
ZGF0YQ0KPiANCj4gU3RvcmFnZSBzZXR0aW5nOg0KPiANCj4gCXN1ZG8gbWRhZG0gLS1jcmVhdGUg
L2Rldi9tZC90ZXN0IC9kZXYvc2RhIC9kZXYvc2RiIC0tbGV2ZWw9MSAtLXJhaWQtZGV2aWNlcz0y
DQo+IAlib3RoIC9kZXYvc2RhIGFuZCAvZGV2L3NkYiBhcmUgdmlydGlvLXNjc2kuDQoNClRoYW5r
cyBmb3IgdGhlIGRldGFpbGVkIHJlcGx5LiBJIGhhdmUgYmVlbiBhYmxlIHRvIHJlcHJvZHVjZSB0
aGUgZnJlZXplIGZhaWx1cmUNCnlvdSByZXBvcnRlZC4gVGhlIG91dHB1dCBvZiBTeXNScS10IGxl
YXJuZWQgbWUgdGhhdCB0aGUgbWQgcmVib290IG5vdGlmaWVyIHdhcw0Kd2FpdGluZyBmb3IgdGhl
IGZyb3plbiBtZCBzeW5jIHRocmVhZCBhbmQgdGhhdCB0aGlzIGNhdXNlZCB0aGUgZnJlZXplIGZh
aWx1cmUuIFNvDQpJIGhhdmUgc3RhcnRlZCB0ZXN0aW5nIHRoZSBwYXRjaCBiZWxvdyBpbnN0ZWFk
IG9mIHRoZSBwYXRjaCBhdCB0aGUgc3RhcnQgb2YgdGhpcw0KZS1tYWlsIHRocmVhZDoNCg0KDQpT
dWJqZWN0OiBbUEFUQ0hdIG1kOiBTdG9wIHJlc3luYyBhbmQgcmVzaGFwZSB1cG9uIHN5c3RlbSBm
cmVlemUNCg0KU29tZSBwZW9wbGUgdXNlIHRoZSBtZCBkcml2ZXIgb24gbGFwdG9wcyBhbmQgdXNl
IHRoZSBzdXNwZW5kIGFuZA0KcmVzdW1lIGZ1bmN0aW9uYWxpdHkuIFNpbmNlIGl0IGlzIGVzc2Vu
dGlhbCB0aGF0IHN1Ym1pdHRpbmcgb2YNCm5ldyBJL08gcmVxdWVzdHMgc3RvcHMgYmVmb3JlIGEg
aGliZXJuYXRpb24gaW1hZ2UgaXMgY3JlYXRlZCwNCmludGVycnVwdCB0aGUgbWQgcmVzeW5jIGFu
ZCByZXNoYXBlIGFjdGlvbnMgaWYgdGhlIHN5c3RlbSBpcw0KYmVpbmcgZnJvemVuLiBOb3RlOiB0
aGUgcmVzeW5jIGFuZCByZXNoYXBlIHdpbGwgcmVzdGFydCBhZnRlcg0KdGhlIHN5c3RlbSBpcyBy
ZXN1bWVkIGFuZCBhIG1lc3NhZ2Ugc2ltaWxhciB0byB0aGUgZm9sbG93aW5nDQp3aWxsIGFwcGVh
ciBpbiB0aGUgc3lzdGVtIGxvZzoNCg0KbWQ6IG1kMDogZGF0YS1jaGVjayBpbnRlcnJ1cHRlZC4N
Cg0KLS0tDQogZHJpdmVycy9tZC9tZC5jIHwgMzQgKysrKysrKysrKysrKysrKysrKystLS0tLS0t
LS0tLS0tLQ0KIDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMo
LSkNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvbWQuYyBiL2RyaXZlcnMvbWQvbWQuYw0KaW5k
ZXggMDhmY2FlYmM2MWJkLi4xZTlkNTBmNzM0NWUgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL21kL21k
LmMNCisrKyBiL2RyaXZlcnMvbWQvbWQuYw0KQEAgLTY2LDYgKzY2LDcgQEANCiAjaW5jbHVkZSA8
bGludXgvcmFpZC9tZF91Lmg+DQogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4NCiAjaW5jbHVkZSA8
bGludXgvcGVyY3B1LXJlZmNvdW50Lmg+DQorI2luY2x1ZGUgPGxpbnV4L2ZyZWV6ZXIuaD4NCiAN
CiAjaW5jbHVkZSA8dHJhY2UvZXZlbnRzL2Jsb2NrLmg+DQogI2luY2x1ZGUgIm1kLmgiDQpAQCAt
ODEwMyw2ICs4MTA0LDEyIEBAIHZvaWQgbWRfYWxsb3dfd3JpdGUoc3RydWN0IG1kZGV2ICptZGRl
dikNCiB9DQogRVhQT1JUX1NZTUJPTF9HUEwobWRfYWxsb3dfd3JpdGUpOw0KIA0KK3N0YXRpYyBi
b29sIG1kX3N5bmNfaW50ZXJydXB0ZWQoc3RydWN0IG1kZGV2ICptZGRldikNCit7DQorCXJldHVy
biB0ZXN0X2JpdChNRF9SRUNPVkVSWV9JTlRSLCAmbWRkZXYtPnJlY292ZXJ5KSB8fA0KKwkJZnJl
ZXppbmcoY3VycmVudCk7DQorfQ0KKw0KICNkZWZpbmUgU1lOQ19NQVJLUwkxMA0KICNkZWZpbmUJ
U1lOQ19NQVJLX1NURVAJKDMqSFopDQogI2RlZmluZSBVUERBVEVfRlJFUVVFTkNZICg1KjYwKkha
KQ0KQEAgLTgxMzMsNiArODE0MCw4IEBAIHZvaWQgbWRfZG9fc3luYyhzdHJ1Y3QgbWRfdGhyZWFk
ICp0aHJlYWQpDQogCQlyZXR1cm47DQogCX0NCiANCisJc2V0X2ZyZWV6YWJsZSgpOw0KKw0KIAlp
ZiAobWRkZXZfaXNfY2x1c3RlcmVkKG1kZGV2KSkgew0KIAkJcmV0ID0gbWRfY2x1c3Rlcl9vcHMt
PnJlc3luY19zdGFydChtZGRldik7DQogCQlpZiAocmV0KQ0KQEAgLTgxODQsNyArODE5Myw3IEBA
IHZvaWQgbWRfZG9fc3luYyhzdHJ1Y3QgbWRfdGhyZWFkICp0aHJlYWQpDQogCQltZGRldi0+Y3Vy
cl9yZXN5bmMgPSAyOw0KIA0KIAl0cnlfYWdhaW46DQotCQlpZiAodGVzdF9iaXQoTURfUkVDT1ZF
UllfSU5UUiwgJm1kZGV2LT5yZWNvdmVyeSkpDQorCQlpZiAobWRfc3luY19pbnRlcnJ1cHRlZCht
ZGRldikpDQogCQkJZ290byBza2lwOw0KIAkJZm9yX2VhY2hfbWRkZXYobWRkZXYyLCB0bXApIHsN
CiAJCQlpZiAobWRkZXYyID09IG1kZGV2KQ0KQEAgLTgyMDgsNyArODIxNyw3IEBAIHZvaWQgbWRf
ZG9fc3luYyhzdHJ1Y3QgbWRfdGhyZWFkICp0aHJlYWQpDQogCQkJCSAqIGJlIGNhdWdodCBieSAn
c29mdGxvY2t1cCcNCiAJCQkJICovDQogCQkJCXByZXBhcmVfdG9fd2FpdCgmcmVzeW5jX3dhaXQs
ICZ3cSwgVEFTS19JTlRFUlJVUFRJQkxFKTsNCi0JCQkJaWYgKCF0ZXN0X2JpdChNRF9SRUNPVkVS
WV9JTlRSLCAmbWRkZXYtPnJlY292ZXJ5KSAmJg0KKwkJCQlpZiAoIW1kX3N5bmNfaW50ZXJydXB0
ZWQobWRkZXYpICYmDQogCQkJCSAgICBtZGRldjItPmN1cnJfcmVzeW5jID49IG1kZGV2LT5jdXJy
X3Jlc3luYykgew0KIAkJCQkJaWYgKG1kZGV2Ml9taW5vciAhPSBtZGRldjItPm1kX21pbm9yKSB7
DQogCQkJCQkJbWRkZXYyX21pbm9yID0gbWRkZXYyLT5tZF9taW5vcjsNCkBAIC04MzM1LDggKzgz
NDQsNyBAQCB2b2lkIG1kX2RvX3N5bmMoc3RydWN0IG1kX3RocmVhZCAqdGhyZWFkKQ0KIAkJCXN5
c2ZzX25vdGlmeSgmbWRkZXYtPmtvYmosIE5VTEwsICJzeW5jX2NvbXBsZXRlZCIpOw0KIAkJfQ0K
IA0KLQkJd2hpbGUgKGogPj0gbWRkZXYtPnJlc3luY19tYXggJiYNCi0JCSAgICAgICAhdGVzdF9i
aXQoTURfUkVDT1ZFUllfSU5UUiwgJm1kZGV2LT5yZWNvdmVyeSkpIHsNCisJCXdoaWxlIChqID49
IG1kZGV2LT5yZXN5bmNfbWF4ICYmICFtZF9zeW5jX2ludGVycnVwdGVkKG1kZGV2KSkgew0KIAkJ
CS8qIEFzIHRoaXMgY29uZGl0aW9uIGlzIGNvbnRyb2xsZWQgYnkgdXNlci1zcGFjZSwNCiAJCQkg
KiB3ZSBjYW4gYmxvY2sgaW5kZWZpbml0ZWx5LCBzbyB1c2UgJ19pbnRlcnJ1cHRpYmxlJw0KIAkJ
CSAqIHRvIGF2b2lkIHRyaWdnZXJpbmcgd2FybmluZ3MuDQpAQCAtODM0OCw3ICs4MzU2LDcgQEAg
dm9pZCBtZF9kb19zeW5jKHN0cnVjdCBtZF90aHJlYWQgKnRocmVhZCkNCiAJCQkJCQkJICAgICAm
bWRkZXYtPnJlY292ZXJ5KSk7DQogCQl9DQogDQotCQlpZiAodGVzdF9iaXQoTURfUkVDT1ZFUllf
SU5UUiwgJm1kZGV2LT5yZWNvdmVyeSkpDQorCQlpZiAobWRfc3luY19pbnRlcnJ1cHRlZChtZGRl
dikpDQogCQkJYnJlYWs7DQogDQogCQlzZWN0b3JzID0gbWRkZXYtPnBlcnMtPnN5bmNfcmVxdWVz
dChtZGRldiwgaiwgJnNraXBwZWQpOw0KQEAgLTgzNjIsNyArODM3MCw3IEBAIHZvaWQgbWRfZG9f
c3luYyhzdHJ1Y3QgbWRfdGhyZWFkICp0aHJlYWQpDQogCQkJYXRvbWljX2FkZChzZWN0b3JzLCAm
bWRkZXYtPnJlY292ZXJ5X2FjdGl2ZSk7DQogCQl9DQogDQotCQlpZiAodGVzdF9iaXQoTURfUkVD
T1ZFUllfSU5UUiwgJm1kZGV2LT5yZWNvdmVyeSkpDQorCQlpZiAobWRfc3luY19pbnRlcnJ1cHRl
ZChtZGRldikpDQogCQkJYnJlYWs7DQogDQogCQlqICs9IHNlY3RvcnM7DQpAQCAtODM5NCw3ICs4
NDAyLDcgQEAgdm9pZCBtZF9kb19zeW5jKHN0cnVjdCBtZF90aHJlYWQgKnRocmVhZCkNCiAJCQls
YXN0X21hcmsgPSBuZXh0Ow0KIAkJfQ0KIA0KLQkJaWYgKHRlc3RfYml0KE1EX1JFQ09WRVJZX0lO
VFIsICZtZGRldi0+cmVjb3ZlcnkpKQ0KKwkJaWYgKG1kX3N5bmNfaW50ZXJydXB0ZWQobWRkZXYp
KQ0KIAkJCWJyZWFrOw0KIA0KIAkJLyoNCkBAIC04NDI3LDggKzg0MzUsNyBAQCB2b2lkIG1kX2Rv
X3N5bmMoc3RydWN0IG1kX3RocmVhZCAqdGhyZWFkKQ0KIAkJfQ0KIAl9DQogCXByX2luZm8oIm1k
OiAlczogJXMgJXMuXG4iLG1kbmFtZShtZGRldiksIGRlc2MsDQotCQl0ZXN0X2JpdChNRF9SRUNP
VkVSWV9JTlRSLCAmbWRkZXYtPnJlY292ZXJ5KQ0KLQkJPyAiaW50ZXJydXB0ZWQiIDogImRvbmUi
KTsNCisJCW1kX3N5bmNfaW50ZXJydXB0ZWQobWRkZXYpID8gImludGVycnVwdGVkIiA6ICJkb25l
Iik7DQogCS8qDQogCSAqIHRoaXMgYWxzbyBzaWduYWxzICdmaW5pc2hlZCByZXN5bmNpbmcnIHRv
IG1kX3N0b3ANCiAJICovDQpAQCAtODQzNiw4ICs4NDQzLDcgQEAgdm9pZCBtZF9kb19zeW5jKHN0
cnVjdCBtZF90aHJlYWQgKnRocmVhZCkNCiAJd2FpdF9ldmVudChtZGRldi0+cmVjb3Zlcnlfd2Fp
dCwgIWF0b21pY19yZWFkKCZtZGRldi0+cmVjb3ZlcnlfYWN0aXZlKSk7DQogDQogCWlmICghdGVz
dF9iaXQoTURfUkVDT1ZFUllfUkVTSEFQRSwgJm1kZGV2LT5yZWNvdmVyeSkgJiYNCi0JICAgICF0
ZXN0X2JpdChNRF9SRUNPVkVSWV9JTlRSLCAmbWRkZXYtPnJlY292ZXJ5KSAmJg0KLQkgICAgbWRk
ZXYtPmN1cnJfcmVzeW5jID4gMykgew0KKwkgICAgIW1kX3N5bmNfaW50ZXJydXB0ZWQobWRkZXYp
ICYmIG1kZGV2LT5jdXJyX3Jlc3luYyA+IDMpIHsNCiAJCW1kZGV2LT5jdXJyX3Jlc3luY19jb21w
bGV0ZWQgPSBtZGRldi0+Y3Vycl9yZXN5bmM7DQogCQlzeXNmc19ub3RpZnkoJm1kZGV2LT5rb2Jq
LCBOVUxMLCAic3luY19jb21wbGV0ZWQiKTsNCiAJfQ0KQEAgLTg0NDYsNyArODQ1Miw3IEBAIHZv
aWQgbWRfZG9fc3luYyhzdHJ1Y3QgbWRfdGhyZWFkICp0aHJlYWQpDQogCWlmICghdGVzdF9iaXQo
TURfUkVDT1ZFUllfQ0hFQ0ssICZtZGRldi0+cmVjb3ZlcnkpICYmDQogCSAgICBtZGRldi0+Y3Vy
cl9yZXN5bmMgPiAzKSB7DQogCQlpZiAodGVzdF9iaXQoTURfUkVDT1ZFUllfU1lOQywgJm1kZGV2
LT5yZWNvdmVyeSkpIHsNCi0JCQlpZiAodGVzdF9iaXQoTURfUkVDT1ZFUllfSU5UUiwgJm1kZGV2
LT5yZWNvdmVyeSkpIHsNCisJCQlpZiAobWRfc3luY19pbnRlcnJ1cHRlZChtZGRldikpIHsNCiAJ
CQkJaWYgKG1kZGV2LT5jdXJyX3Jlc3luYyA+PSBtZGRldi0+cmVjb3ZlcnlfY3ApIHsNCiAJCQkJ
CXByX2RlYnVnKCJtZDogY2hlY2twb2ludGluZyAlcyBvZiAlcy5cbiIsDQogCQkJCQkJIGRlc2Ms
IG1kbmFtZShtZGRldikpOw0KQEAgLTg0NjEsNyArODQ2Nyw3IEBAIHZvaWQgbWRfZG9fc3luYyhz
dHJ1Y3QgbWRfdGhyZWFkICp0aHJlYWQpDQogCQkJfSBlbHNlDQogCQkJCW1kZGV2LT5yZWNvdmVy
eV9jcCA9IE1heFNlY3RvcjsNCiAJCX0gZWxzZSB7DQotCQkJaWYgKCF0ZXN0X2JpdChNRF9SRUNP
VkVSWV9JTlRSLCAmbWRkZXYtPnJlY292ZXJ5KSkNCisJCQlpZiAoIW1kX3N5bmNfaW50ZXJydXB0
ZWQobWRkZXYpKQ0KIAkJCQltZGRldi0+Y3Vycl9yZXN5bmMgPSBNYXhTZWN0b3I7DQogCQkJcmN1
X3JlYWRfbG9jaygpOw0KIAkJCXJkZXZfZm9yX2VhY2hfcmN1KHJkZXYsIG1kZGV2KQ0KQEAgLTg0
ODMsNyArODQ4OSw3IEBAIHZvaWQgbWRfZG9fc3luYyhzdHJ1Y3QgbWRfdGhyZWFkICp0aHJlYWQp
DQogCQkgICAgICBCSVQoTURfU0JfQ0hBTkdFX1BFTkRJTkcpIHwgQklUKE1EX1NCX0NIQU5HRV9E
RVZTKSk7DQogDQogCXNwaW5fbG9jaygmbWRkZXYtPmxvY2spOw0KLQlpZiAoIXRlc3RfYml0KE1E
X1JFQ09WRVJZX0lOVFIsICZtZGRldi0+cmVjb3ZlcnkpKSB7DQorCWlmICghbWRfc3luY19pbnRl
cnJ1cHRlZChtZGRldikpIHsNCiAJCS8qIFdlIGNvbXBsZXRlZCBzbyBtaW4vbWF4IHNldHRpbmcg
Y2FuIGJlIGZvcmdvdHRlbiBpZiB1c2VkLiAqLw0KIAkJaWYgKHRlc3RfYml0KE1EX1JFQ09WRVJZ
X1JFUVVFU1RFRCwgJm1kZGV2LT5yZWNvdmVyeSkpDQogCQkJbWRkZXYtPnJlc3luY19taW4gPSAw
Ow0K
WARNING: multiple messages have this Message-ID (diff)
From: Bart Van Assche <Bart.VanAssche@wdc.com>
To: "ming.lei@redhat.com" <ming.lei@redhat.com>
Cc: "linux-block@vger.kernel.org" <linux-block@vger.kernel.org>,
"jthumshirn@suse.de" <jthumshirn@suse.de>,
"linux-raid@vger.kernel.org" <linux-raid@vger.kernel.org>,
"hch@lst.de" <hch@lst.de>,
"martin.petersen@oracle.com" <martin.petersen@oracle.com>,
"axboe@kernel.dk" <axboe@kernel.dk>,
"oleksandr@natalenko.name" <oleksandr@natalenko.name>,
"hare@suse.com" <hare@suse.com>,
"shli@kernel.org" <shli@kernel.org>
Subject: Re: [PATCH v4 1/7] md: Make md resync and reshape threads freezable
Date: Wed, 27 Sep 2017 03:12:47 +0000 [thread overview]
Message-ID: <1506481915.2822.9.camel@wdc.com> (raw)
In-Reply-To: <20170926145919.GC31449@ming.t460p>
On Tue, 2017-09-26 at 22:59 +0800, Ming Lei wrote:
> On Tue, Sep 26, 2017 at 02:42:07PM +0000, Bart Van Assche wrote:
> > On Tue, 2017-09-26 at 19:17 +0800, Ming Lei wrote:
> > > Just test this patch a bit and the following failure of freezing task
> > > is triggered during suspend: [ ... ]
> >
> > What kernel version did you start from and which patches were applied on top of
> > that kernel? Only patch 1/7 or all seven patches? What storage configuration did
>
> It is v4.14-rc1+, and top commit is 8d93c7a43157, with all your 7 patches
> applied.
>
> > you use in your test and what command(s) did you use to trigger suspend?
>
> Follows my pm test script:
>
> #!/bin/sh
>
> echo check > /sys/block/md127/md/sync_action
>
> mkfs.ext4 -F /dev/md127
>
> mount /dev/md0 /mnt/data
>
> dd if=/dev/zero of=/mnt/data/d1.img bs=4k count=128k&
>
> echo 9 > /proc/sys/kernel/printk
> echo devices > /sys/power/pm_test
> echo mem > /sys/power/state
>
> wait
> umount /mnt/data
>
> Storage setting:
>
> sudo mdadm --create /dev/md/test /dev/sda /dev/sdb --level=1 --raid-devices=2
> both /dev/sda and /dev/sdb are virtio-scsi.
Thanks for the detailed reply. I have been able to reproduce the freeze failure
you reported. The output of SysRq-t learned me that the md reboot notifier was
waiting for the frozen md sync thread and that this caused the freeze failure. So
I have started testing the patch below instead of the patch at the start of this
e-mail thread:
Subject: [PATCH] md: Stop resync and reshape upon system freeze
Some people use the md driver on laptops and use the suspend and
resume functionality. Since it is essential that submitting of
new I/O requests stops before a hibernation image is created,
interrupt the md resync and reshape actions if the system is
being frozen. Note: the resync and reshape will restart after
the system is resumed and a message similar to the following
will appear in the system log:
md: md0: data-check interrupted.
---
drivers/md/md.c | 34 ++++++++++++++++++++--------------
1 file changed, 20 insertions(+), 14 deletions(-)
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 08fcaebc61bd..1e9d50f7345e 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -66,6 +66,7 @@
#include <linux/raid/md_u.h>
#include <linux/slab.h>
#include <linux/percpu-refcount.h>
+#include <linux/freezer.h>
#include <trace/events/block.h>
#include "md.h"
@@ -8103,6 +8104,12 @@ void md_allow_write(struct mddev *mddev)
}
EXPORT_SYMBOL_GPL(md_allow_write);
+static bool md_sync_interrupted(struct mddev *mddev)
+{
+ return test_bit(MD_RECOVERY_INTR, &mddev->recovery) ||
+ freezing(current);
+}
+
#define SYNC_MARKS 10
#define SYNC_MARK_STEP (3*HZ)
#define UPDATE_FREQUENCY (5*60*HZ)
@@ -8133,6 +8140,8 @@ void md_do_sync(struct md_thread *thread)
return;
}
+ set_freezable();
+
if (mddev_is_clustered(mddev)) {
ret = md_cluster_ops->resync_start(mddev);
if (ret)
@@ -8184,7 +8193,7 @@ void md_do_sync(struct md_thread *thread)
mddev->curr_resync = 2;
try_again:
- if (test_bit(MD_RECOVERY_INTR, &mddev->recovery))
+ if (md_sync_interrupted(mddev))
goto skip;
for_each_mddev(mddev2, tmp) {
if (mddev2 == mddev)
@@ -8208,7 +8217,7 @@ void md_do_sync(struct md_thread *thread)
* be caught by 'softlockup'
*/
prepare_to_wait(&resync_wait, &wq, TASK_INTERRUPTIBLE);
- if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery) &&
+ if (!md_sync_interrupted(mddev) &&
mddev2->curr_resync >= mddev->curr_resync) {
if (mddev2_minor != mddev2->md_minor) {
mddev2_minor = mddev2->md_minor;
@@ -8335,8 +8344,7 @@ void md_do_sync(struct md_thread *thread)
sysfs_notify(&mddev->kobj, NULL, "sync_completed");
}
- while (j >= mddev->resync_max &&
- !test_bit(MD_RECOVERY_INTR, &mddev->recovery)) {
+ while (j >= mddev->resync_max && !md_sync_interrupted(mddev)) {
/* As this condition is controlled by user-space,
* we can block indefinitely, so use '_interruptible'
* to avoid triggering warnings.
@@ -8348,7 +8356,7 @@ void md_do_sync(struct md_thread *thread)
&mddev->recovery));
}
- if (test_bit(MD_RECOVERY_INTR, &mddev->recovery))
+ if (md_sync_interrupted(mddev))
break;
sectors = mddev->pers->sync_request(mddev, j, &skipped);
@@ -8362,7 +8370,7 @@ void md_do_sync(struct md_thread *thread)
atomic_add(sectors, &mddev->recovery_active);
}
- if (test_bit(MD_RECOVERY_INTR, &mddev->recovery))
+ if (md_sync_interrupted(mddev))
break;
j += sectors;
@@ -8394,7 +8402,7 @@ void md_do_sync(struct md_thread *thread)
last_mark = next;
}
- if (test_bit(MD_RECOVERY_INTR, &mddev->recovery))
+ if (md_sync_interrupted(mddev))
break;
/*
@@ -8427,8 +8435,7 @@ void md_do_sync(struct md_thread *thread)
}
}
pr_info("md: %s: %s %s.\n",mdname(mddev), desc,
- test_bit(MD_RECOVERY_INTR, &mddev->recovery)
- ? "interrupted" : "done");
+ md_sync_interrupted(mddev) ? "interrupted" : "done");
/*
* this also signals 'finished resyncing' to md_stop
*/
@@ -8436,8 +8443,7 @@ void md_do_sync(struct md_thread *thread)
wait_event(mddev->recovery_wait, !atomic_read(&mddev->recovery_active));
if (!test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) &&
- !test_bit(MD_RECOVERY_INTR, &mddev->recovery) &&
- mddev->curr_resync > 3) {
+ !md_sync_interrupted(mddev) && mddev->curr_resync > 3) {
mddev->curr_resync_completed = mddev->curr_resync;
sysfs_notify(&mddev->kobj, NULL, "sync_completed");
}
@@ -8446,7 +8452,7 @@ void md_do_sync(struct md_thread *thread)
if (!test_bit(MD_RECOVERY_CHECK, &mddev->recovery) &&
mddev->curr_resync > 3) {
if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) {
- if (test_bit(MD_RECOVERY_INTR, &mddev->recovery)) {
+ if (md_sync_interrupted(mddev)) {
if (mddev->curr_resync >= mddev->recovery_cp) {
pr_debug("md: checkpointing %s of %s.\n",
desc, mdname(mddev));
@@ -8461,7 +8467,7 @@ void md_do_sync(struct md_thread *thread)
} else
mddev->recovery_cp = MaxSector;
} else {
- if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery))
+ if (!md_sync_interrupted(mddev))
mddev->curr_resync = MaxSector;
rcu_read_lock();
rdev_for_each_rcu(rdev, mddev)
@@ -8483,7 +8489,7 @@ void md_do_sync(struct md_thread *thread)
BIT(MD_SB_CHANGE_PENDING) | BIT(MD_SB_CHANGE_DEVS));
spin_lock(&mddev->lock);
- if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery)) {
+ if (!md_sync_interrupted(mddev)) {
/* We completed so min/max setting can be forgotten if used. */
if (test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery))
mddev->resync_min = 0;
next prev parent reply other threads:[~2017-09-27 3:12 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-25 20:29 [PATCH v4 0/7] Make suspend and resume safe for md-on-SCSI Bart Van Assche
2017-09-25 20:29 ` [PATCH v4 1/7] md: Make md resync and reshape threads freezable Bart Van Assche
2017-09-25 23:04 ` Ming Lei
2017-09-25 23:09 ` Bart Van Assche
2017-09-25 23:09 ` Bart Van Assche
2017-09-26 4:01 ` Ming Lei
2017-09-26 8:13 ` Ming Lei
2017-09-26 14:40 ` Bart Van Assche
2017-09-26 14:40 ` Bart Van Assche
2017-09-26 15:02 ` Ming Lei
2017-09-26 6:06 ` Hannes Reinecke
2017-09-26 11:17 ` Ming Lei
2017-09-26 14:42 ` Bart Van Assche
2017-09-26 14:42 ` Bart Van Assche
2017-09-26 14:59 ` Ming Lei
2017-09-27 3:12 ` Bart Van Assche [this message]
2017-09-27 3:12 ` Bart Van Assche
2017-09-27 11:00 ` Ming Lei
2017-10-02 15:39 ` Bart Van Assche
2017-10-02 15:39 ` Bart Van Assche
2017-10-02 13:26 ` Christoph Hellwig
2017-09-25 20:29 ` [PATCH v4 2/7] block: Make q_usage_counter also track legacy requests Bart Van Assche
2017-09-26 6:05 ` Hannes Reinecke
2017-09-26 8:34 ` Ming Lei
2017-10-02 13:29 ` Christoph Hellwig
2017-09-25 20:29 ` [PATCH v4 3/7] block: Convert RQF_PREEMPT into REQ_PREEMPT Bart Van Assche
2017-10-02 13:42 ` Christoph Hellwig
2017-10-02 13:43 ` Christoph Hellwig
2017-09-25 20:29 ` [PATCH v4 4/7] block: Add the QUEUE_FLAG_PREEMPT_ONLY request queue flag Bart Van Assche
2017-10-02 13:47 ` Christoph Hellwig
2017-10-02 15:56 ` Bart Van Assche
2017-10-02 16:14 ` hch
2017-09-25 20:29 ` [PATCH v4 5/7] scsi: Reduce suspend latency Bart Van Assche
2017-09-26 22:23 ` Ming Lei
2017-09-27 3:43 ` Bart Van Assche
2017-09-27 5:37 ` Ming Lei
2017-09-25 20:29 ` [PATCH v4 6/7] scsi: Set QUEUE_FLAG_PREEMPT_ONLY while quiesced Bart Van Assche
2017-10-02 13:53 ` Christoph Hellwig
2017-09-25 20:29 ` [PATCH v4 7/7] block: Make SCSI device suspend and resume work reliably Bart Van Assche
2017-09-25 22:59 ` Ming Lei
2017-09-25 23:13 ` Bart Van Assche
2017-09-26 8:32 ` Ming Lei
2017-09-26 14:44 ` Bart Van Assche
2017-09-26 9:15 ` [PATCH v4 0/7] Make suspend and resume safe for md-on-SCSI Ming Lei
2017-09-26 14:29 ` Bart Van Assche
2017-09-26 14:54 ` Ming Lei
2017-09-26 20:17 ` Bart Van Assche
2017-09-26 22:47 ` Ming Lei
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1506481915.2822.9.camel@wdc.com \
--to=bart.vanassche@wdc.com \
--cc=axboe@kernel.dk \
--cc=hare@suse.com \
--cc=hch@lst.de \
--cc=jthumshirn@suse.de \
--cc=linux-block@vger.kernel.org \
--cc=linux-raid@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=ming.lei@redhat.com \
--cc=oleksandr@natalenko.name \
--cc=shli@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.