From mboxrd@z Thu Jan 1 00:00:00 1970 From: majianpeng Subject: [PATCH 2/2] raid5: Using conf->device_lock protect multi-thread resouce when changed. Date: Tue, 12 Nov 2013 10:43:39 +0800 Message-ID: <201311121043363569796@gmail.com> Reply-To: majianpeng Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Sender: linux-raid-owner@vger.kernel.org To: NeilBrown , shli Cc: linux-raid List-Id: linux-raid.ids V2hlbiBjaGFuZ2VkIGdyb3VwX3RocmVhZF9jbnQgZnJvbSBzeXNmcyBlbnRyeSwgaXQgbWV0IE9P UFMuDQpUaGUga2VybmVsIG1lc3NhZ2VzIGFyZToNClsgIDEzNS4yOTkwMjFdIEJVRzogdW5hYmxl IHRvIGhhbmRsZSBrZXJuZWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGF0ICAgICAgICAgICAo bnVsbCkNClsgIDEzNS4yOTkwNzNdIElQOiBbPGZmZmZmZmZmODE1MTg4YWI+XSBoYW5kbGVfYWN0 aXZlX3N0cmlwZXMrMHgzMmIvMHg0NDANClsgIDEzNS4yOTkxMDddIFBHRCAwDQpbICAxMzUuMjk5 MTIyXSBPb3BzOiAwMDAwIFsjMV0gU01QDQpbICAxMzUuMjk5MTQ0XSBNb2R1bGVzIGxpbmtlZCBp bjogbmV0Y29uc29sZSBlMTAwMGUgcHRwIHBwc19jb3JlDQpbICAxMzUuMjk5MTg4XSBDUFU6IDMg UElEOiAyMjI1IENvbW06IG1kMF9yYWlkNSBOb3QgdGFpbnRlZCAzLjEyLjArICMyNA0KWyAgMTM1 LjI5OTIxNF0gSGFyZHdhcmUgbmFtZTogVG8gQmUgRmlsbGVkIEJ5IE8uRS5NLiBUbyBCZSBGaWxs ZWQgQnkgTy5FLk0uL1RvIGJlIGZpbGxlZCBieSBPLkUuTS4sIEJJT1MgMDgwMDE1ICAxMS8wOS8y MDExDQpbICAxMzUuMjk5MjU1XSB0YXNrOiBmZmZmODgwMGI5NjM4ZjgwIHRpOiBmZmZmODgwMGI3 N2E0MDAwIHRhc2sudGk6IGZmZmY4ODAwYjc3YTQwMDANClsgIDEzNS4yOTkyODNdIFJJUDogMDAx MDpbPGZmZmZmZmZmODE1MTg4YWI+XSAgWzxmZmZmZmZmZjgxNTE4OGFiPl0gaGFuZGxlX2FjdGl2 ZV9zdHJpcGVzKzB4MzJiLzB4NDQwDQpbICAxMzUuMjk5MzIzXSBSU1A6IDAwMTg6ZmZmZjg4MDBi NzdhNWM0OCAgRUZMQUdTOiAwMDAxMDAwMg0KWyAgMTM1LjI5OTM0NF0gUkFYOiBmZmZmODgwMDM3 YmI1YzcwIFJCWDogMDAwMDAwMDAwMDAwMDAwMCBSQ1g6IDAwMDAwMDAwMDAwMDAwMDgNClsgIDEz NS4yOTkzNzFdIFJEWDogZmZmZjg4MDAzN2JiNWNiOCBSU0k6IDAwMDAwMDAwMDAwMDAwMDEgUkRJ OiBmZmZmODgwMDM3YmI1YzAwDQpbICAxMzUuMjk5Mzk4XSBSQlA6IGZmZmY4ODAwYjc3YTVkMDgg UjA4OiAwMDAwMDAwMDAwMDAwMDAxIFIwOTogMDAwMDAwMDAwMDAwMDAwMA0KWyAgMTM1LjI5OTQy NV0gUjEwOiBmZmZmODgwMGI3N2E1Yzk4IFIxMTogMDAwMDAwMDBmZmZmZmZmZiBSMTI6IGZmZmY4 ODAwMzdiYjVjMDANClsgIDEzNS4yOTk0NTJdIFIxMzogMDAwMDAwMDAwMDAwMDAwMCBSMTQ6IDAw MDAwMDAwMDAwMDAwMDAgUjE1OiBmZmZmODgwMDM3YmI1YzcwDQpbICAxMzUuMjk5NDc5XSBGUzog IDAwMDAwMDAwMDAwMDAwMDAoMDAwMCkgR1M6ZmZmZjg4MDEzZmQ4MDAwMCgwMDAwKSBrbmxHUzow MDAwMDAwMDAwMDAwMDAwDQpbICAxMzUuMjk5NTEwXSBDUzogIDAwMTAgRFM6IDAwMDAgRVM6IDAw MDAgQ1IwOiAwMDAwMDAwMDgwMDUwMDNiDQpbICAxMzUuMjk5NTMyXSBDUjI6IDAwMDAwMDAwMDAw MDAwMDAgQ1IzOiAwMDAwMDAwMDAxYzBiMDAwIENSNDogMDAwMDAwMDAwMDA0MDdlMA0KWyAgMTM1 LjI5OTU1OV0gU3RhY2s6DQpbICAxMzUuMjk5NTcwXSAgZmZmZjg4MDBiNzdhNWM4OCBmZmZmZmZm ZjgxMDczODNlIGZmZmY4ODAwYjc3YTVjODggZmZmZjg4MDAzN2E2NDMwMA0KWyAgMTM1LjI5OTYx MV0gIDAwMDAwMDAwMDAwMGVjMDggZmZmZjg4MDAzN2JiNWNiOCBmZmZmODgwMGI3N2E1Yzk4IGZm ZmZmZmZmZmZmZmZmZDgNClsgIDEzNS4yOTk2NTRdICAwMDAwMDAwMDAwMDBlYzA4IGZmZmY4ODAw MzdiYjVjNjAgZmZmZjg4MDBiNzdhNWM5OCBmZmZmODgwMGI3N2E1Yzk4DQpbICAxMzUuMjk5Njk2 XSBDYWxsIFRyYWNlOg0KWyAgMTM1LjI5OTcxMV0gIFs8ZmZmZmZmZmY4MTA3MzgzZT5dID8gX193 YWtlX3VwKzB4NGUvMHg3MA0KWyAgMTM1LjI5OTczM10gIFs8ZmZmZmZmZmY4MTUxOGY4OD5dIHJh aWQ1ZCsweDRjOC8weDY4MA0KWyAgMTM1LjI5OTc1Nl0gIFs8ZmZmZmZmZmY4MTcxNzRlZD5dID8g c2NoZWR1bGVfdGltZW91dCsweDE1ZC8weDFmMA0KWyAgMTM1LjI5OTc4MV0gIFs8ZmZmZmZmZmY4 MTUyNGM5Zj5dIG1kX3RocmVhZCsweDExZi8weDE3MA0KWyAgMTM1LjI5OTgwNF0gIFs8ZmZmZmZm ZmY4MTA2OWNkMD5dID8gd2FrZV91cF9iaXQrMHg0MC8weDQwDQpbICAxMzUuMjk5ODI2XSAgWzxm ZmZmZmZmZjgxNTI0YjgwPl0gPyBtZF9yZGV2X2luaXQrMHgxMTAvMHgxMTANClsgIDEzNS4yOTk4 NTBdICBbPGZmZmZmZmZmODEwNjk2NTY+XSBrdGhyZWFkKzB4YzYvMHhkMA0KWyAgMTM1LjI5OTg3 MV0gIFs8ZmZmZmZmZmY4MTA2OTU5MD5dID8ga3RocmVhZF9mcmVlemFibGVfc2hvdWxkX3N0b3Ar MHg3MC8weDcwDQpbICAxMzUuMjk5ODk5XSAgWzxmZmZmZmZmZjgxNzIyZmZjPl0gcmV0X2Zyb21f Zm9yaysweDdjLzB4YjANClsgIDEzNS4yOTk5MjNdICBbPGZmZmZmZmZmODEwNjk1OTA+XSA/IGt0 aHJlYWRfZnJlZXphYmxlX3Nob3VsZF9zdG9wKzB4NzAvMHg3MA0KWyAgMTM1LjI5OTk1MV0gQ29k ZTogZmYgZmYgZmYgMGYgODQgZDcgZmUgZmYgZmYgZTkgNWMgZmUgZmYgZmYgNjYgOTAgNDEgOGIg YjQgMjQgZDggMDEgMDAgMDAgNDUgMzEgZWQgODUgZjYgMGYgOGUgN2IgZmQgZmYgZmYgNDkgOGIg OWMgMjQgZDAgMDEgMDAgMDAgPDQ4PiAzYiAxYiA0OSA4OSBkZCAwZiA4NSA2NyBmZCBmZiBmZiA0 OCA4ZCA0MyAyOCAzMSBkMiBlYiAxNyA5MA0KWyAgMTM1LjMwMDAwNV0gUklQICBbPGZmZmZmZmZm ODE1MTg4YWI+XSBoYW5kbGVfYWN0aXZlX3N0cmlwZXMrMHgzMmIvMHg0NDANClsgIDEzNS4zMDAw MDVdICBSU1AgPGZmZmY4ODAwYjc3YTVjNDg+DQpbICAxMzUuMzAwMDA1XSBDUjI6IDAwMDAwMDAw MDAwMDAwMDANClsgIDEzNS4zMDAwMDVdIC0tLVsgZW5kIHRyYWNlIDUwNDg1NGU1YmI3NTYyZWQg XS0tLQ0KWyAgMTM1LjMwMDAwNV0gS2VybmVsIHBhbmljIC0gbm90IHN5bmNpbmc6IEZhdGFsIGV4 Y2VwdGlvbg0KDQpUaGlzIGJlY2F1c2UgcmFpZDVkKCkgY2FuIHJ1bm5pbmcgd2hlbiBjaGFuZ2Vk IG11bHRpLXRocmVhZCByZXNvdXJjZXMuDQpBZnRlciBtZGR2ZV9zdXNwZW5kKCksIHRoZSByYWlk NWQoKSBjYW4gc3RpbGwgb24gcnVubmluZy4NCkJ1dCB3aGVuIGNoYW5nZSBtdWx0aS10aHJlYWQg cmVzb3VyY2VzIGluIHJhaWQ1X3N0b3JlX2dyb3VwX3RocmVhZF9jbnQoKSwNCml0IGNhbid0IHVz ZSBjb25mLT5kZXZpY2VfbG9jayB0byBwcm90ZWN0Lg0KDQpTaWduZWQtb2ZmLWJ5OiBKaWFucGVu ZyBNYSA8bWFqaWFucGVuZ0BnbWFpbC5jb20+DQotLS0NCiBkcml2ZXJzL21kL3JhaWQ1LmMgfCAg IDYwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQ0K IDEgZmlsZXMgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pDQoNCmRp ZmYgLS1naXQgYS9kcml2ZXJzL21kL3JhaWQ1LmMgYi9kcml2ZXJzL21kL3JhaWQ1LmMNCmluZGV4 IGNjODY2ZjguLmM1MGMxODAgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL21kL3JhaWQ1LmMNCisrKyBi L2RyaXZlcnMvbWQvcmFpZDUuYw0KQEAgLTUyMTMsMTUgKzUyMTMsMTcgQEAgcmFpZDVfc2hvd19n cm91cF90aHJlYWRfY250KHN0cnVjdCBtZGRldiAqbWRkZXYsIGNoYXIgKnBhZ2UpDQogCQlyZXR1 cm4gMDsNCiB9DQogDQotc3RhdGljIGludCBhbGxvY190aHJlYWRfZ3JvdXBzKHN0cnVjdCByNWNv bmYgKmNvbmYsIGludCBjbnQpOw0KK3N0YXRpYyBpbnQgYWxsb2NfdGhyZWFkX2dyb3VwcyhzdHJ1 Y3QgcjVjb25mICpjb25mLCBpbnQgY250LCBpbnQgKmdyb3VwX2NudCwNCisJCQkJaW50ICp3b3Jr ZXJfY250X3Blcl9ncm91cCwNCisJCQkJc3RydWN0IHI1d29ya2VyX2dyb3VwICoqd29ya2VyX2dy b3Vwcyk7DQogc3RhdGljIHNzaXplX3QNCiByYWlkNV9zdG9yZV9ncm91cF90aHJlYWRfY250KHN0 cnVjdCBtZGRldiAqbWRkZXYsIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBsZW4pDQogew0KIAlz dHJ1Y3QgcjVjb25mICpjb25mID0gbWRkZXYtPnByaXZhdGU7DQogCXVuc2lnbmVkIGxvbmcgbmV3 Ow0KIAlpbnQgZXJyOw0KLQlzdHJ1Y3QgcjV3b3JrZXJfZ3JvdXAgKm9sZF9ncm91cHM7DQotCWlu dCBvbGRfZ3JvdXBfY250Ow0KKwlzdHJ1Y3QgcjV3b3JrZXJfZ3JvdXAgKm5ld19ncm91cHMsICpv bGRfZ3JvdXBzOw0KKwlpbnQgZ3JvdXBfY250LCB3b3JrZXJfY250X3Blcl9ncm91cDsNCiANCiAJ aWYgKGxlbiA+PSBQQUdFX1NJWkUpDQogCQlyZXR1cm4gLUVJTlZBTDsNCkBAIC01MjM3LDE3ICs1 MjM5LDE4IEBAIHJhaWQ1X3N0b3JlX2dyb3VwX3RocmVhZF9jbnQoc3RydWN0IG1kZGV2ICptZGRl diwgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGxlbikNCiAJbWRkZXZfc3VzcGVuZChtZGRldik7 DQogDQogCW9sZF9ncm91cHMgPSBjb25mLT53b3JrZXJfZ3JvdXBzOw0KLQlvbGRfZ3JvdXBfY250 ID0gY29uZi0+d29ya2VyX2NudF9wZXJfZ3JvdXA7DQotDQogCWlmIChvbGRfZ3JvdXBzKQ0KIAkJ Zmx1c2hfd29ya3F1ZXVlKHJhaWQ1X3dxKTsNCiANCi0JY29uZi0+d29ya2VyX2dyb3VwcyA9IE5V TEw7DQotCWVyciA9IGFsbG9jX3RocmVhZF9ncm91cHMoY29uZiwgbmV3KTsNCi0JaWYgKGVycikg ew0KLQkJY29uZi0+d29ya2VyX2dyb3VwcyA9IG9sZF9ncm91cHM7DQotCQljb25mLT53b3JrZXJf Y250X3Blcl9ncm91cCA9IG9sZF9ncm91cF9jbnQ7DQotCX0gZWxzZSB7DQorCWVyciA9IGFsbG9j X3RocmVhZF9ncm91cHMoY29uZiwgbmV3LCAmZ3JvdXBfY250LCAmd29ya2VyX2NudF9wZXJfZ3Jv dXAsDQorCQkJCQkmbmV3X2dyb3Vwcyk7DQorCWlmICghZXJyKSB7DQorCQlzcGluX2xvY2tfaXJx KCZjb25mLT5kZXZpY2VfbG9jayk7DQorCQljb25mLT5ncm91cF9jbnQgPSBncm91cF9jbnQ7DQor CQljb25mLT53b3JrZXJfY250X3Blcl9ncm91cCA9IHdvcmtlcl9jbnRfcGVyX2dyb3VwOw0KKwkJ Y29uZi0+d29ya2VyX2dyb3VwcyA9IG5ld19ncm91cHM7DQorCQlzcGluX3VubG9ja19pcnEoJmNv bmYtPmRldmljZV9sb2NrKTsNCisNCiAJCWlmIChvbGRfZ3JvdXBzKQ0KIAkJCWtmcmVlKG9sZF9n cm91cHNbMF0ud29ya2Vycyk7DQogCQlrZnJlZShvbGRfZ3JvdXBzKTsNCkBAIC01Mjc3LDMzICs1 MjgwLDM1IEBAIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIHJhaWQ1X2F0dHJzX2dyb3Vw ID0gew0KIAkuYXR0cnMgPSByYWlkNV9hdHRycywNCiB9Ow0KIA0KLXN0YXRpYyBpbnQgYWxsb2Nf dGhyZWFkX2dyb3VwcyhzdHJ1Y3QgcjVjb25mICpjb25mLCBpbnQgY250KQ0KK3N0YXRpYyBpbnQg YWxsb2NfdGhyZWFkX2dyb3VwcyhzdHJ1Y3QgcjVjb25mICpjb25mLCBpbnQgY250LCBpbnQgKmdy b3VwX2NudCwNCisJCQkJaW50ICp3b3JrZXJfY250X3Blcl9ncm91cCwNCisJCQkJc3RydWN0IHI1 d29ya2VyX2dyb3VwICoqd29ya2VyX2dyb3VwcykNCiB7DQogCWludCBpLCBqOw0KIAlzc2l6ZV90 IHNpemU7DQogCXN0cnVjdCByNXdvcmtlciAqd29ya2VyczsNCiANCi0JY29uZi0+d29ya2VyX2Nu dF9wZXJfZ3JvdXAgPSBjbnQ7DQorCSp3b3JrZXJfY250X3Blcl9ncm91cCA9IGNudDsNCiAJaWYg KGNudCA9PSAwKSB7DQotCQljb25mLT53b3JrZXJfZ3JvdXBzID0gTlVMTDsNCisJCSpncm91cF9j bnQgPSAwOw0KKwkJKndvcmtlcl9ncm91cHMgPSBOVUxMOw0KIAkJcmV0dXJuIDA7DQogCX0NCi0J Y29uZi0+Z3JvdXBfY250ID0gbnVtX3Bvc3NpYmxlX25vZGVzKCk7DQorCSpncm91cF9jbnQgPSBu dW1fcG9zc2libGVfbm9kZXMoKTsNCiAJc2l6ZSA9IHNpemVvZihzdHJ1Y3QgcjV3b3JrZXIpICog Y250Ow0KLQl3b3JrZXJzID0ga3phbGxvYyhzaXplICogY29uZi0+Z3JvdXBfY250LCBHRlBfTk9J Tyk7DQotCWNvbmYtPndvcmtlcl9ncm91cHMgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgcjV3b3Jr ZXJfZ3JvdXApICoNCi0JCQkJY29uZi0+Z3JvdXBfY250LCBHRlBfTk9JTyk7DQotCWlmICghY29u Zi0+d29ya2VyX2dyb3VwcyB8fCAhd29ya2Vycykgew0KKwl3b3JrZXJzID0ga3phbGxvYyhzaXpl ICogKmdyb3VwX2NudCwgR0ZQX05PSU8pOw0KKwkqd29ya2VyX2dyb3VwcyA9IGt6YWxsb2Moc2l6 ZW9mKHN0cnVjdCByNXdvcmtlcl9ncm91cCkgKg0KKwkJCQkqZ3JvdXBfY250LCBHRlBfTk9JTyk7 DQorCWlmICghKndvcmtlcl9ncm91cHMgfHwgIXdvcmtlcnMpIHsNCiAJCWtmcmVlKHdvcmtlcnMp Ow0KLQkJa2ZyZWUoY29uZi0+d29ya2VyX2dyb3Vwcyk7DQotCQljb25mLT53b3JrZXJfZ3JvdXBz ID0gTlVMTDsNCisJCWtmcmVlKCp3b3JrZXJfZ3JvdXBzKTsNCiAJCXJldHVybiAtRU5PTUVNOw0K IAl9DQogDQotCWZvciAoaSA9IDA7IGkgPCBjb25mLT5ncm91cF9jbnQ7IGkrKykgew0KKwlmb3Ig KGkgPSAwOyBpIDwgKmdyb3VwX2NudDsgaSsrKSB7DQogCQlzdHJ1Y3QgcjV3b3JrZXJfZ3JvdXAg Kmdyb3VwOw0KIA0KLQkJZ3JvdXAgPSAmY29uZi0+d29ya2VyX2dyb3Vwc1tpXTsNCisJCWdyb3Vw ID0gd29ya2VyX2dyb3Vwc1tpXTsNCiAJCUlOSVRfTElTVF9IRUFEKCZncm91cC0+aGFuZGxlX2xp c3QpOw0KIAkJZ3JvdXAtPmNvbmYgPSBjb25mOw0KIAkJZ3JvdXAtPndvcmtlcnMgPSB3b3JrZXJz ICsgaSAqIGNudDsNCkBAIC01NDYxLDYgKzU0NjYsOCBAQCBzdGF0aWMgc3RydWN0IHI1Y29uZiAq c2V0dXBfY29uZihzdHJ1Y3QgbWRkZXYgKm1kZGV2KQ0KIAlzdHJ1Y3QgbWRfcmRldiAqcmRldjsN CiAJc3RydWN0IGRpc2tfaW5mbyAqZGlzazsNCiAJY2hhciBwZXJzX25hbWVbNl07DQorCWludCBn cm91cF9jbnQsIHdvcmtlcl9jbnRfcGVyX2dyb3VwOw0KKwlzdHJ1Y3QgcjV3b3JrZXJfZ3JvdXAg Km5ld19ncm91cDsNCiANCiAJaWYgKG1kZGV2LT5uZXdfbGV2ZWwgIT0gNQ0KIAkgICAgJiYgbWRk ZXYtPm5ld19sZXZlbCAhPSA0DQpAQCAtNTQ5NSw3ICs1NTAyLDEyIEBAIHN0YXRpYyBzdHJ1Y3Qg cjVjb25mICpzZXR1cF9jb25mKHN0cnVjdCBtZGRldiAqbWRkZXYpDQogCWlmIChjb25mID09IE5V TEwpDQogCQlnb3RvIGFib3J0Ow0KIAkvKiBEb24ndCBlbmFibGUgbXVsdGktdGhyZWFkaW5nIGJ5 IGRlZmF1bHQqLw0KLQlpZiAoYWxsb2NfdGhyZWFkX2dyb3Vwcyhjb25mLCAwKSkNCisJaWYgKCFh bGxvY190aHJlYWRfZ3JvdXBzKGNvbmYsIDAsICZncm91cF9jbnQsICZ3b3JrZXJfY250X3Blcl9n cm91cCwNCisJCQkJJm5ld19ncm91cCkpIHsNCisJCWNvbmYtPmdyb3VwX2NudCA9IGdyb3VwX2Nu dDsNCisJCWNvbmYtPndvcmtlcl9jbnRfcGVyX2dyb3VwID0gd29ya2VyX2NudF9wZXJfZ3JvdXA7 DQorCQljb25mLT53b3JrZXJfZ3JvdXBzID0gbmV3X2dyb3VwOw0KKwl9IGVsc2UNCiAJCWdvdG8g YWJvcnQ7DQogCXNwaW5fbG9ja19pbml0KCZjb25mLT5kZXZpY2VfbG9jayk7DQogCXNlcWNvdW50 X2luaXQoJmNvbmYtPmdlbl9sb2NrKTsNCi0tIA0KMS43LjENCg==