From mboxrd@z Thu Jan 1 00:00:00 1970 From: "majianpeng" Subject: Re: Re: md/raid5:Fix recover/replace stop if handle stipe failed Date: Tue, 27 Mar 2012 15:33:25 +0800 Message-ID: <201203271533149067900@gmail.com> References: <201203141507458909278@gmail.com>, <201203141727412189832@gmail.com>, <20120327142642.3e40547d@notabene.brown> Mime-Version: 1.0 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 Return-path: Sender: linux-raid-owner@vger.kernel.org To: NeilBrown Cc: linux-raid List-Id: linux-raid.ids SSB0ZXN0ZWQgYW5kIGNvcnJlY3RlZCBzb21lIGJ1Zy4NCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWQvcmFpZDUuYyBiL2RyaXZlcnMvbWQvcmFpZDUuYw0KaW5kZXggMjNhYzg4MC4uZjg0ODBmOCAx MDA2NDQNCi0tLSBhL2RyaXZlcnMvbWQvcmFpZDUuYw0KKysrIGIvZHJpdmVycy9tZC9yYWlkNS5j DQpAQCAtMjQ3MSwzOSArMjQ3MSw0MiBAQCBoYW5kbGVfZmFpbGVkX3N5bmMoc3RydWN0IHI1Y29u ZiAqY29uZiwgc3RydWN0IHN0cmlwZV9oZWFkICpzaCwNCiAgICAgICAgaW50IGFib3J0ID0gMDsN CiAgICAgICAgaW50IGk7DQogDQotICAgICAgIG1kX2RvbmVfc3luYyhjb25mLT5tZGRldiwgU1RS SVBFX1NFQ1RPUlMsIDApOw0KICAgICAgICBjbGVhcl9iaXQoU1RSSVBFX1NZTkNJTkcsICZzaC0+ c3RhdGUpOw0KICAgICAgICBzLT5zeW5jaW5nID0gMDsNCiAgICAgICAgcy0+cmVwbGFjaW5nID0g MDsNCiAgICAgICAgLyogVGhlcmUgaXMgbm90aGluZyBtb3JlIHRvIGRvIGZvciBzeW5jL2NoZWNr L3JlcGFpci4NCisgICAgICAgICogRG9uJ3QgZXZlbiBuZWVkIHRvIGFib3J0IGFzIHRoYXQgaXMg aGFuZGxlZCBlbHNld2hlcmUNCisgICAgICAgICogaWYgbmVlZGVkLCBhbmQgbm90IGFsd2F5cyB3 YW50ZWQgZS5nLiBpZiB0aGVyZSBpcyBhIGtub3duDQorICAgICAgICAqIGJhZCBibG9jayBoZXJl Lg0KICAgICAgICAgKiBGb3IgcmVjb3Zlci9yZXBsYWNlIHdlIG5lZWQgdG8gcmVjb3JkIGEgYmFk IGJsb2NrIG9uIGFsbA0KICAgICAgICAgKiBub24tc3luYyBkZXZpY2VzLCBvciBhYm9ydCB0aGUg cmVjb3ZlcnkNCiAgICAgICAgICovDQotICAgICAgIGlmICghdGVzdF9iaXQoTURfUkVDT1ZFUllf UkVDT1ZFUiwgJmNvbmYtPm1kZGV2LT5yZWNvdmVyeSkpDQotICAgICAgICAgICAgICAgcmV0dXJu Ow0KLSAgICAgICAvKiBEdXJpbmcgcmVjb3ZlcnkgZGV2aWNlcyBjYW5ub3QgYmUgcmVtb3ZlZCwg c28gbG9ja2luZyBhbmQNCi0gICAgICAgICogcmVmY291bnRpbmcgb2YgcmRldnMgaXMgbm90IG5l ZWRlZA0KLSAgICAgICAgKi8NCi0gICAgICAgZm9yIChpID0gMDsgaSA8IGNvbmYtPnJhaWRfZGlz a3M7IGkrKykgew0KLSAgICAgICAgICAgICAgIHN0cnVjdCBtZF9yZGV2ICpyZGV2ID0gY29uZi0+ ZGlza3NbaV0ucmRldjsNCi0gICAgICAgICAgICAgICBpZiAocmRldg0KLSAgICAgICAgICAgICAg ICAgICAmJiAhdGVzdF9iaXQoRmF1bHR5LCAmcmRldi0+ZmxhZ3MpDQotICAgICAgICAgICAgICAg ICAgICYmICF0ZXN0X2JpdChJbl9zeW5jLCAmcmRldi0+ZmxhZ3MpDQotICAgICAgICAgICAgICAg ICAgICYmICFyZGV2X3NldF9iYWRibG9ja3MocmRldiwgc2gtPnNlY3RvciwNCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVFJJUEVfU0VDVE9SUywgMCkpDQotICAg ICAgICAgICAgICAgICAgICAgICBhYm9ydCA9IDE7DQotICAgICAgICAgICAgICAgcmRldiA9IGNv bmYtPmRpc2tzW2ldLnJlcGxhY2VtZW50Ow0KLSAgICAgICAgICAgICAgIGlmIChyZGV2DQotICAg ICAgICAgICAgICAgICAgICYmICF0ZXN0X2JpdChGYXVsdHksICZyZGV2LT5mbGFncykNCi0gICAg ICAgICAgICAgICAgICAgJiYgIXRlc3RfYml0KEluX3N5bmMsICZyZGV2LT5mbGFncykNCi0gICAg ICAgICAgICAgICAgICAgJiYgIXJkZXZfc2V0X2JhZGJsb2NrcyhyZGV2LCBzaC0+c2VjdG9yLA0K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUUklQRV9TRUNUT1JT LCAwKSkNCi0gICAgICAgICAgICAgICAgICAgICAgIGFib3J0ID0gMTsNCi0gICAgICAgfQ0KLSAg ICAgICBpZiAoYWJvcnQpIHsNCi0gICAgICAgICAgICAgICBjb25mLT5yZWNvdmVyeV9kaXNhYmxl ZCA9IGNvbmYtPm1kZGV2LT5yZWNvdmVyeV9kaXNhYmxlZDsNCi0gICAgICAgICAgICAgICBzZXRf Yml0KE1EX1JFQ09WRVJZX0lOVFIsICZjb25mLT5tZGRldi0+cmVjb3ZlcnkpOw0KLSAgICAgICB9 DQorICAgICAgIGlmICh0ZXN0X2JpdChNRF9SRUNPVkVSWV9SRUNPVkVSLCAmY29uZi0+bWRkZXYt PnJlY292ZXJ5KSkgew0KKyAgICAgICAgICAgICAgIC8qIER1cmluZyByZWNvdmVyeSBkZXZpY2Vz IGNhbm5vdCBiZSByZW1vdmVkLCBzbw0KKyAgICAgICAgICAgICAgICAqIGxvY2tpbmcgYW5kIHJl ZmNvdW50aW5nIG9mIHJkZXZzIGlzIG5vdCBuZWVkZWQNCisgICAgICAgICAgICAgICAgKi8NCisg ICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY29uZi0+cmFpZF9kaXNrczsgaSsrKSB7DQor ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbWRfcmRldiAqcmRldiA9IGNvbmYtPmRpc2tz W2ldLnJkZXY7DQorICAgICAgICAgICAgICAgICAgICAgICBpZiAocmRldg0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICYmICF0ZXN0X2JpdChGYXVsdHksICZyZGV2LT5mbGFncykNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAmJiAhdGVzdF9iaXQoSW5fc3luYywgJnJkZXYtPmZsYWdz KQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICFyZGV2X3NldF9iYWRibG9ja3MocmRl diwgc2gtPnNlY3RvciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFNUUklQRV9TRUNUT1JTLCAwKSkNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYWJvcnQgPSAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgcmRldiA9IGNvbmYtPmRp c2tzW2ldLnJlcGxhY2VtZW50Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJkZXYNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhdGVzdF9iaXQoRmF1bHR5LCAmcmRldi0+Zmxh Z3MpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIXRlc3RfYml0KEluX3N5bmMsICZy ZGV2LT5mbGFncykNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhcmRldl9zZXRfYmFk YmxvY2tzKHJkZXYsIHNoLT5zZWN0b3IsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTVFJJUEVfU0VDVE9SUywgMCkpDQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFib3J0ID0gMTsNCisgICAgICAgICAgICAgICB9DQorICAgICAgICAg ICAgICAgaWYgKGFib3J0KQ0KKyAgICAgICAgICAgICAgICAgICAgICAgY29uZi0+cmVjb3Zlcnlf ZGlzYWJsZWQgPQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25mLT5tZGRldi0+ cmVjb3ZlcnlfZGlzYWJsZWQ7DQorICAgICAgIH0gZWxzZQ0KKyAgICAgICAgICAgICAgIGFib3J0 ID0gMTsNCisgICAgICAgbWRfZG9uZV9zeW5jKGNvbmYtPm1kZGV2LCBTVFJJUEVfU0VDVE9SUywg IWFib3J0KTsNCiB9DQogDQogc3RhdGljIGludCB3YW50X3JlcGxhY2Uoc3RydWN0IHN0cmlwZV9o ZWFkICpzaCwgaW50IGRpc2tfaWR4KQ0KQEAgLTMyMDMsNyArMzIwNiw4IEBAIHN0YXRpYyB2b2lk IGFuYWx5c2Vfc3RyaXBlKHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gsIHN0cnVjdCBzdHJpcGVfaGVh ZF9zdGF0ZSAqcykNCiAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vdCBpbi1zeW5jICovOw0K ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzX2JhZCkgew0KICAgICAgICAgICAgICAgICAgICAg ICAgLyogYWxzbyBub3QgaW4tc3luYyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0 ZXN0X2JpdChXcml0ZUVycm9yU2VlbiwgJnJkZXYtPmZsYWdzKSkgew0KKyAgICAgICAgICAgICAg ICAgICAgICAgaWYgKCF0ZXN0X2JpdChXcml0ZUVycm9yU2VlbiwgJnJkZXYtPmZsYWdzKSAmJg0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfYml0KFI1X1VQVE9EQVRFLCAmZGV2LT5m bGFncykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHJlYXQgYXMgaW4t c3luYywgYnV0IHdpdGggYSByZWFkIGVycm9yDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqIHdoaWNoIHdlIGNhbiBub3cgdHJ5IHRvIGNvcnJlY3QNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICovDQoNCg0KLS0tLS0tLS0tLS0tLS0tLS0tCQkJCSANCm1hamlhbnBl bmcNCjIwMTItMDMtMjcNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kt6K8/sjLo7pOZWlsQnJvd24NCreiy83I1cbao7oyMDEy LTAzLTI3IDExOjI2OjUwDQrK1bz+yMujum1hamlhbnBlbmcNCrOty82jumxpbnV4LXJhaWQNCtb3 zOKjulJlOiBtZC9yYWlkNTpGaXggcmVjb3Zlci9yZXBsYWNlIHN0b3AgaWYgaGFuZGxlIHN0aXBl IGZhaWxlZA0KDQpPbiBXZWQsIDE0IE1hciAyMDEyIDE3OjI3OjQ0ICswODAwICJtYWppYW5wZW5n IiA8bWFqaWFucGVuZ0BnbWFpbC5jb20+IHdyb3RlOg0KDQo+IEkgY3JlYXRlZCBhIHJhaWQ1IHVz aW5nIHRocmVlIGRpc2tzIGFuZCBkaXNrMCBhZGQgYmFkIGJsb2Nrcy5JIHNldCBmYXVsdHkgZGlz azIgYW5kIHJlbW92IGRpc2syIGFuZCByZWFkZCBkaXNrMi4NCj4gSXQgc2VlbXMgdG8gcmVjb3Zl ciB3ZWxsIGFuZCBzZXQgZGlzazIgYmFkYmxvY2tzICBhcyBkaXNrMC4NCj4gQnV0IHRoZSBtZDBf cmVzeW5jIHJlcGVhdGx5IHN0b3AgYW5kIHN0YXJ0Lg0KPiBUaGUgcmVjb3Zlcnlfc3RhcnQgb2Yg ZGlzazIgYWxsIHRoZSBzYW1lIC4NCj4gDQoNClRoYW5rcyBmb3IgdGhlIGV4dHJhIGRldGFpbHMg KGFuZCBzb3JyeSBmb3IgdGhlIGRlbGF5IGluIHJlcGx5aW5nKS4NCg0KVGhlcmUgY2VydGFpbmx5 IGlzIHNvbWV0aGluZyB3cm9uZyB3aXRoIGhhbmRsaW5nIGJhZCBibG9ja3MgZHVyaW5nIHJlY292 ZXJ5Lg0KDQpJIHRoaW5rIHRoaXMgcGF0Y2ggc2hvdWxkIGZpeCBpdC4gIEFyZSB5b3UgYWJsZSB0 byB0ZXN0IGl0IGFuZCBjb25maXJtPw0KDQpUaGFua3MsDQpOZWlsQnJvd24NCg0KDQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZC9yYWlkNS5jIGIvZHJpdmVycy9tZC9yYWlkNS5jDQppbmRleCAyM2Fj ODgwLi4yMTg2ZTBlIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9tZC9yYWlkNS5jDQorKysgYi9kcml2 ZXJzL21kL3JhaWQ1LmMNCkBAIC0yNDcxLDM5ICsyNDcxLDQxIEBAIGhhbmRsZV9mYWlsZWRfc3lu YyhzdHJ1Y3QgcjVjb25mICpjb25mLCBzdHJ1Y3Qgc3RyaXBlX2hlYWQgKnNoLA0KIAlpbnQgYWJv cnQgPSAwOw0KIAlpbnQgaTsNCiANCi0JbWRfZG9uZV9zeW5jKGNvbmYtPm1kZGV2LCBTVFJJUEVf U0VDVE9SUywgMCk7DQogCWNsZWFyX2JpdChTVFJJUEVfU1lOQ0lORywgJnNoLT5zdGF0ZSk7DQog CXMtPnN5bmNpbmcgPSAwOw0KIAlzLT5yZXBsYWNpbmcgPSAwOw0KIAkvKiBUaGVyZSBpcyBub3Ro aW5nIG1vcmUgdG8gZG8gZm9yIHN5bmMvY2hlY2svcmVwYWlyLg0KKwkgKiBEb24ndCBldmVuIG5l ZWQgdG8gYWJvcnQgYXMgdGhhdCBpcyBoYW5kbGVkIGVsc2V3aGVyZQ0KKwkgKiBpZiBuZWVkZWQs IGFuZCBub3QgYWx3YXlzIHdhbnRlZCBlLmcuIGlmIHRoZXJlIGlzIGEga25vd24NCisJICogYmFk IGJsb2NrIGhlcmUuDQogCSAqIEZvciByZWNvdmVyL3JlcGxhY2Ugd2UgbmVlZCB0byByZWNvcmQg YSBiYWQgYmxvY2sgb24gYWxsDQogCSAqIG5vbi1zeW5jIGRldmljZXMsIG9yIGFib3J0IHRoZSBy ZWNvdmVyeQ0KIAkgKi8NCi0JaWYgKCF0ZXN0X2JpdChNRF9SRUNPVkVSWV9SRUNPVkVSLCAmY29u Zi0+bWRkZXYtPnJlY292ZXJ5KSkNCi0JCXJldHVybjsNCi0JLyogRHVyaW5nIHJlY292ZXJ5IGRl dmljZXMgY2Fubm90IGJlIHJlbW92ZWQsIHNvIGxvY2tpbmcgYW5kDQotCSAqIHJlZmNvdW50aW5n IG9mIHJkZXZzIGlzIG5vdCBuZWVkZWQNCi0JICovDQotCWZvciAoaSA9IDA7IGkgPCBjb25mLT5y YWlkX2Rpc2tzOyBpKyspIHsNCi0JCXN0cnVjdCBtZF9yZGV2ICpyZGV2ID0gY29uZi0+ZGlza3Nb aV0ucmRldjsNCi0JCWlmIChyZGV2DQotCQkgICAgJiYgIXRlc3RfYml0KEZhdWx0eSwgJnJkZXYt PmZsYWdzKQ0KLQkJICAgICYmICF0ZXN0X2JpdChJbl9zeW5jLCAmcmRldi0+ZmxhZ3MpDQotCQkg ICAgJiYgIXJkZXZfc2V0X2JhZGJsb2NrcyhyZGV2LCBzaC0+c2VjdG9yLA0KLQkJCQkJICAgU1RS SVBFX1NFQ1RPUlMsIDApKQ0KLQkJCWFib3J0ID0gMTsNCi0JCXJkZXYgPSBjb25mLT5kaXNrc1tp XS5yZXBsYWNlbWVudDsNCi0JCWlmIChyZGV2DQotCQkgICAgJiYgIXRlc3RfYml0KEZhdWx0eSwg JnJkZXYtPmZsYWdzKQ0KLQkJICAgICYmICF0ZXN0X2JpdChJbl9zeW5jLCAmcmRldi0+ZmxhZ3Mp DQotCQkgICAgJiYgIXJkZXZfc2V0X2JhZGJsb2NrcyhyZGV2LCBzaC0+c2VjdG9yLA0KLQkJCQkJ ICAgU1RSSVBFX1NFQ1RPUlMsIDApKQ0KLQkJCWFib3J0ID0gMTsNCi0JfQ0KLQlpZiAoYWJvcnQp IHsNCi0JCWNvbmYtPnJlY292ZXJ5X2Rpc2FibGVkID0gY29uZi0+bWRkZXYtPnJlY292ZXJ5X2Rp c2FibGVkOw0KLQkJc2V0X2JpdChNRF9SRUNPVkVSWV9JTlRSLCAmY29uZi0+bWRkZXYtPnJlY292 ZXJ5KTsNCisJaWYgKHRlc3RfYml0KE1EX1JFQ09WRVJZX1JFQ09WRVIsICZjb25mLT5tZGRldi0+ cmVjb3ZlcnkpKSB7DQorCQkvKiBEdXJpbmcgcmVjb3ZlcnkgZGV2aWNlcyBjYW5ub3QgYmUgcmVt b3ZlZCwgc28NCisJCSAqIGxvY2tpbmcgYW5kIHJlZmNvdW50aW5nIG9mIHJkZXZzIGlzIG5vdCBu ZWVkZWQNCisJCSAqLw0KKwkJZm9yIChpID0gMDsgaSA8IGNvbmYtPnJhaWRfZGlza3M7IGkrKykg ew0KKwkJCXN0cnVjdCBtZF9yZGV2ICpyZGV2ID0gY29uZi0+ZGlza3NbaV0ucmRldjsNCisJCQlp ZiAocmRldg0KKwkJCSAgICAmJiAhdGVzdF9iaXQoRmF1bHR5LCAmcmRldi0+ZmxhZ3MpDQorCQkJ ICAgICYmICF0ZXN0X2JpdChJbl9zeW5jLCAmcmRldi0+ZmxhZ3MpDQorCQkJICAgICYmICFyZGV2 X3NldF9iYWRibG9ja3MocmRldiwgc2gtPnNlY3RvciwNCisJCQkJCQkgICBTVFJJUEVfU0VDVE9S UywgMCkpDQorCQkJCWFib3J0ID0gMTsNCisJCQlyZGV2ID0gY29uZi0+ZGlza3NbaV0ucmVwbGFj ZW1lbnQ7DQorCQkJaWYgKHJkZXYNCisJCQkgICAgJiYgIXRlc3RfYml0KEZhdWx0eSwgJnJkZXYt PmZsYWdzKQ0KKwkJCSAgICAmJiAhdGVzdF9iaXQoSW5fc3luYywgJnJkZXYtPmZsYWdzKQ0KKwkJ CSAgICAmJiAhcmRldl9zZXRfYmFkYmxvY2tzKHJkZXYsIHNoLT5zZWN0b3IsDQorCQkJCQkJICAg U1RSSVBFX1NFQ1RPUlMsIDApKQ0KKwkJCQlhYm9ydCA9IDE7DQorCQl9DQorCQlpZiAoYWJvcnQp DQorCQkJY29uZi0+cmVjb3ZlcnlfZGlzYWJsZWQgPQ0KKwkJCQljb25mLT5tZGRldi0+cmVjb3Zl cnlfZGlzYWJsZWQ7DQogCX0NCisJbWRfZG9uZV9zeW5jKGNvbmYtPm1kZGV2LCBTVFJJUEVfU0VD VE9SUywgIWFib3J0KTsNCiB9DQogDQogc3RhdGljIGludCB3YW50X3JlcGxhY2Uoc3RydWN0IHN0 cmlwZV9oZWFkICpzaCwgaW50IGRpc2tfaWR4KQ0KQEAgLTMyMDMsNyArMzIwNSw4IEBAIHN0YXRp YyB2b2lkIGFuYWx5c2Vfc3RyaXBlKHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gsIHN0cnVjdCBzdHJp cGVfaGVhZF9zdGF0ZSAqcykNCiAJCQkvKiBOb3QgaW4tc3luYyAqLzsNCiAJCWVsc2UgaWYgKGlz X2JhZCkgew0KIAkJCS8qIGFsc28gbm90IGluLXN5bmMgKi8NCi0JCQlpZiAoIXRlc3RfYml0KFdy aXRlRXJyb3JTZWVuLCAmcmRldi0+ZmxhZ3MpKSB7DQorCQkJaWYgKCF0ZXN0X2JpdChXcml0ZUVy cm9yU2VlbiwgJnJkZXYtPmZsYWdzKSAmJg0KKwkJCSAgICB0ZXN0X2JpdChSNV9VUFRPREFURSwg JnNoLT5kZXZzW2ldLmZsYWdzKSkgew0KIAkJCQkvKiB0cmVhdCBhcyBpbi1zeW5jLCBidXQgd2l0 aCBhIHJlYWQgZXJyb3INCiAJCQkJICogd2hpY2ggd2UgY2FuIG5vdyB0cnkgdG8gY29ycmVjdA0K IAkJCQkgKi8NCg==