From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lukasz Orlowski Subject: [PATCH 1/2] imsm: Moves metadata update code for spare activation to separate function Date: Fri, 21 Oct 2011 09:47:37 +0200 Message-ID: <20111021074737.14969.56642.stgit@gklab-128-192.igk.intel.com> References: <20111021074643.14969.22068.stgit@gklab-128-192.igk.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20111021074643.14969.22068.stgit@gklab-128-192.igk.intel.com> Sender: linux-raid-owner@vger.kernel.org To: neilb@suse.de, dan.j.williams@intel.com Cc: linux-raid@vger.kernel.org List-Id: linux-raid.ids VGhlIG1ldGFkYXRhIHVwZGF0ZSBjb2RlIGR1cmluZyBzcGFyZSBhY3RpdmF0aW9uIGlzIG1vdmVk IHRvIGEgc2VwYXJhdGUKZnVuY3Rpb24gZm9yIGNsYXJpdHkgb2YgY29kZSwgYXMgYSBwcmV3b3Jr IGZvciB0aGUgbmV4dCBwYXRjaCBmaXhpbmcKdGhlIGJ1Zy4KClNpZ25lZC1vZmYtYnk6IEx1a2Fz eiBPcmxvd3NraSA8bHVrYXN6Lm9ybG93c2tpQGludGVsLmNvbT4KLS0tCiBzdXBlci1pbnRlbC5j IHwgIDE5NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIDEgZmlsZXMgY2hhbmdlZCwgMTAyIGluc2VydGlvbnMoKyksIDkzIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3N1cGVyLWludGVsLmMgYi9zdXBlci1pbnRlbC5jCmluZGV4IGRm YTg1YWEuLmM2NjkxMzUgMTAwNjQ0Ci0tLSBhL3N1cGVyLWludGVsLmMKKysrIGIvc3VwZXItaW50 ZWwuYwpAQCAtNjk4Miw2ICs2OTgyLDEwNiBAQCBlcnJvcl9kaXNrX2FkZDoKIAlyZXR1cm4gcmV0 X3ZhbDsKIH0KIAorc3RhdGljIGludCBhcHBseV91cGRhdGVfYWN0aXZhdGVfc3BhcmUoc3RydWN0 IGltc21fdXBkYXRlX2FjdGl2YXRlX3NwYXJlICp1LAorCQlzdHJ1Y3QgaW50ZWxfc3VwZXIgKnN1 cGVyLCBzdHJ1Y3QgYWN0aXZlX2FycmF5ICphY3RpdmVfYXJyYXkpIHsKKwlzdHJ1Y3QgaW1zbV9z dXBlciAqbXBiID0gc3VwZXItPmFuY2hvcjsKKwlzdHJ1Y3QgaW1zbV9kZXYgKmRldiA9IGdldF9p bXNtX2RldihzdXBlciwgdS0+YXJyYXkpOworCXN0cnVjdCBpbXNtX21hcCAqbWFwID0gZ2V0X2lt c21fbWFwKGRldiwgMCk7CisJc3RydWN0IGltc21fbWFwICptaWdyX21hcDsKKwlzdHJ1Y3QgYWN0 aXZlX2FycmF5ICphOworCXN0cnVjdCBpbXNtX2Rpc2sgKmRpc2s7CisJX191OCB0b19zdGF0ZTsK KwlzdHJ1Y3QgZGwgKmRsOworCXVuc2lnbmVkIGludCBmb3VuZDsKKwlpbnQgZmFpbGVkOworCWlu dCB2aWN0aW0gPSBnZXRfaW1zbV9kaXNrX2lkeChkZXYsIHUtPnNsb3QsIC0xKTsKKwlpbnQgaTsK KworCQlmb3IgKGRsID0gc3VwZXItPmRpc2tzOyBkbDsgZGwgPSBkbC0+bmV4dCkKKwkJCWlmIChk bCA9PSB1LT5kbCkKKwkJCQlicmVhazsKKworCQlpZiAoIWRsKSB7CisJCQlmcHJpbnRmKHN0ZGVy ciwgImVycm9yOiBpbXNtX2FjdGl2YXRlX3NwYXJlIHBhc3NlZCAiCisJCQkJCSJhbiB1bmtub3du IGRpc2sgKGluZGV4OiAlZClcbiIsCisJCQkJCXUtPmRsLT5pbmRleCk7CisJCQlyZXR1cm4gMDsK KwkJfQorCisJCS8qIGNvdW50IGZhaWx1cmVzIChleGNsdWRpbmcgcmVidWlsZHMgYW5kIHRoZSB2 aWN0aW0pCisJCSAqIHRvIGRldGVybWluZSBtYXBbMF0gc3RhdGUKKwkJICovCisJCWZhaWxlZCA9 IDA7CisJCWZvciAoaSA9IDA7IGkgPCBtYXAtPm51bV9tZW1iZXJzOyBpKyspIHsKKwkJCWlmIChp ID09IHUtPnNsb3QpCisJCQkJY29udGludWU7CisJCQlkaXNrID0gZ2V0X2ltc21fZGlzayhzdXBl ciwKKwkJCQkJZ2V0X2ltc21fZGlza19pZHgoZGV2LCBpLCAtMSkpOworCQkJaWYgKCFkaXNrIHx8 IGlzX2ZhaWxlZChkaXNrKSkKKwkJCQlmYWlsZWQrKzsKKwkJfQorCisJCS8qIGFkZGluZyBhIHBy aXN0aW5lIHNwYXJlLCBhc3NpZ24gYSBuZXcgaW5kZXggKi8KKwkJaWYgKGRsLT5pbmRleCA8IDAp IHsKKwkJCWRsLT5pbmRleCA9IHN1cGVyLT5hbmNob3ItPm51bV9kaXNrczsKKwkJCXN1cGVyLT5h bmNob3ItPm51bV9kaXNrcysrOworCQl9CisJCWRpc2sgPSAmZGwtPmRpc2s7CisJCWRpc2stPnN0 YXR1cyB8PSBDT05GSUdVUkVEX0RJU0s7CisJCWRpc2stPnN0YXR1cyAmPSB+U1BBUkVfRElTSzsK KworCQkvKiBtYXJrIHJlYnVpbGQgKi8KKwkJdG9fc3RhdGUgPSBpbXNtX2NoZWNrX2RlZ3JhZGVk KHN1cGVyLCBkZXYsIGZhaWxlZCk7CisJCW1hcC0+bWFwX3N0YXRlID0gSU1TTV9UX1NUQVRFX0RF R1JBREVEOworCQltaWdyYXRlKGRldiwgc3VwZXIsIHRvX3N0YXRlLCBNSUdSX1JFQlVJTEQpOwor CQltaWdyX21hcCA9IGdldF9pbXNtX21hcChkZXYsIDEpOworCQlzZXRfaW1zbV9vcmRfdGJsX2Vu dChtYXAsIHUtPnNsb3QsIGRsLT5pbmRleCk7CisJCXNldF9pbXNtX29yZF90YmxfZW50KG1pZ3Jf bWFwLCB1LT5zbG90LAorCQkJCWRsLT5pbmRleCB8IElNU01fT1JEX1JFQlVJTEQpOworCisJCS8q IHVwZGF0ZSB0aGUgZmFtaWx5X251bSB0byBtYXJrIGEgbmV3IGNvbnRhaW5lcgorCQkgKiBnZW5l cmF0aW9uLCBiZWluZyBjYXJlZnVsIHRvIHJlY29yZCB0aGUgZXhpc3RpbmcKKwkJICogZmFtaWx5 X251bSBpbiBvcmlnX2ZhbWlseV9udW0gdG8gY2xlYW4gdXAgYWZ0ZXIKKwkJICogZWFybGllciBt ZGFkbSB2ZXJzaW9ucyB0aGF0IG5lZ2xlY3RlZCB0byBzZXQgaXQuCisJCSAqLworCQlpZiAobXBi LT5vcmlnX2ZhbWlseV9udW0gPT0gMCkKKwkJCW1wYi0+b3JpZ19mYW1pbHlfbnVtID0gbXBiLT5m YW1pbHlfbnVtOworCQltcGItPmZhbWlseV9udW0gKz0gc3VwZXItPnJhbmRvbTsKKworCQkvKiBj b3VudCBhcnJheXMgdXNpbmcgdGhlIHZpY3RpbSBpbiB0aGUgbWV0YWRhdGEgKi8KKwkJZm91bmQg PSAwOworCQlmb3IgKGEgPSBhY3RpdmVfYXJyYXk7IGEgOyBhID0gYS0+bmV4dCkgeworCQkJZGV2 ID0gZ2V0X2ltc21fZGV2KHN1cGVyLCBhLT5pbmZvLmNvbnRhaW5lcl9tZW1iZXIpOworCQkJbWFw ID0gZ2V0X2ltc21fbWFwKGRldiwgMCk7CisKKwkJCWlmIChnZXRfaW1zbV9kaXNrX3Nsb3QobWFw LCB2aWN0aW0pID49IDApCisJCQkJZm91bmQrKzsKKwkJfQorCisJCS8qIGRlbGV0ZSB0aGUgdmlj dGltIGlmIGl0IGlzIG5vIGxvbmdlciBiZWluZworCQkgKiB1dGlsaXplZCBhbnl3aGVyZQorCQkg Ki8KKwkJaWYgKCFmb3VuZCkgeworCQkJc3RydWN0IGRsICoqZGxwOworCisJCQkvKiBXZSBrbm93 IHRoYXQgJ21hbmFnZXInIGlzbid0IHRvdWNoaW5nIGFueXRoaW5nLAorCQkJICogc28gaXQgaXMg c2FmZSB0byBkZWxldGUKKwkJCSAqLworCQkJZm9yIChkbHAgPSAmc3VwZXItPmRpc2tzOyAqZGxw OyBkbHAgPSAmKCpkbHApLT5uZXh0KQorCQkJCWlmICgoKmRscCktPmluZGV4ID09IHZpY3RpbSkK KwkJCQkJYnJlYWs7CisKKwkJCS8qIHZpY3RpbSBtYXkgYmUgb24gdGhlIG1pc3NpbmcgbGlzdCAq LworCQkJaWYgKCEqZGxwKQorCQkJCWZvciAoZGxwID0gJnN1cGVyLT5taXNzaW5nOyAqZGxwOwor CQkJCQkJZGxwID0gJigqZGxwKS0+bmV4dCkKKwkJCQkJaWYgKCgqZGxwKS0+aW5kZXggPT0gdmlj dGltKQorCQkJCQkJYnJlYWs7CisJCQlpbXNtX2RlbGV0ZShzdXBlciwgZGxwLCB2aWN0aW0pOwor CQl9CisKKwlyZXR1cm4gMTsKK30KIAogc3RhdGljIGludCBhcHBseV9yZXNoYXBlX2NvbnRhaW5l cl9kaXNrc191cGRhdGUoc3RydWN0IGltc21fdXBkYXRlX3Jlc2hhcGUgKnUsCiAJCQkJCQlzdHJ1 Y3QgaW50ZWxfc3VwZXIgKnN1cGVyLApAQCAtNzI3Niw5OSArNzM3Niw4IEBAIHN0YXRpYyB2b2lk IGltc21fcHJvY2Vzc191cGRhdGUoc3RydWN0IHN1cGVydHlwZSAqc3QsCiAJfQogCWNhc2UgdXBk YXRlX2FjdGl2YXRlX3NwYXJlOiB7CiAJCXN0cnVjdCBpbXNtX3VwZGF0ZV9hY3RpdmF0ZV9zcGFy ZSAqdSA9ICh2b2lkICopIHVwZGF0ZS0+YnVmOyAKLQkJc3RydWN0IGltc21fZGV2ICpkZXYgPSBn ZXRfaW1zbV9kZXYoc3VwZXIsIHUtPmFycmF5KTsKLQkJc3RydWN0IGltc21fbWFwICptYXAgPSBn ZXRfaW1zbV9tYXAoZGV2LCAwKTsKLQkJc3RydWN0IGltc21fbWFwICptaWdyX21hcDsKLQkJc3Ry dWN0IGFjdGl2ZV9hcnJheSAqYTsKLQkJc3RydWN0IGltc21fZGlzayAqZGlzazsKLQkJX191OCB0 b19zdGF0ZTsKLQkJc3RydWN0IGRsICpkbDsKLQkJdW5zaWduZWQgaW50IGZvdW5kOwotCQlpbnQg ZmFpbGVkOwotCQlpbnQgdmljdGltID0gZ2V0X2ltc21fZGlza19pZHgoZGV2LCB1LT5zbG90LCAt MSk7Ci0JCWludCBpOwotCi0JCWZvciAoZGwgPSBzdXBlci0+ZGlza3M7IGRsOyBkbCA9IGRsLT5u ZXh0KQotCQkJaWYgKGRsID09IHUtPmRsKQotCQkJCWJyZWFrOwotCi0JCWlmICghZGwpIHsKLQkJ CWZwcmludGYoc3RkZXJyLCAiZXJyb3I6IGltc21fYWN0aXZhdGVfc3BhcmUgcGFzc2VkICIKLQkJ CQkiYW4gdW5rbm93biBkaXNrIChpbmRleDogJWQpXG4iLAotCQkJCXUtPmRsLT5pbmRleCk7Ci0J CQlyZXR1cm47Ci0JCX0KLQotCQlzdXBlci0+dXBkYXRlc19wZW5kaW5nKys7Ci0JCS8qIGNvdW50 IGZhaWx1cmVzIChleGNsdWRpbmcgcmVidWlsZHMgYW5kIHRoZSB2aWN0aW0pCi0JCSAqIHRvIGRl dGVybWluZSBtYXBbMF0gc3RhdGUKLQkJICovCi0JCWZhaWxlZCA9IDA7Ci0JCWZvciAoaSA9IDA7 IGkgPCBtYXAtPm51bV9tZW1iZXJzOyBpKyspIHsKLQkJCWlmIChpID09IHUtPnNsb3QpCi0JCQkJ Y29udGludWU7Ci0JCQlkaXNrID0gZ2V0X2ltc21fZGlzayhzdXBlciwKLQkJCQkJICAgICBnZXRf aW1zbV9kaXNrX2lkeChkZXYsIGksIC0xKSk7Ci0JCQlpZiAoIWRpc2sgfHwgaXNfZmFpbGVkKGRp c2spKQotCQkJCWZhaWxlZCsrOwotCQl9Ci0KLQkJLyogYWRkaW5nIGEgcHJpc3RpbmUgc3BhcmUs IGFzc2lnbiBhIG5ldyBpbmRleCAqLwotCQlpZiAoZGwtPmluZGV4IDwgMCkgewotCQkJZGwtPmlu ZGV4ID0gc3VwZXItPmFuY2hvci0+bnVtX2Rpc2tzOwotCQkJc3VwZXItPmFuY2hvci0+bnVtX2Rp c2tzKys7Ci0JCX0KLQkJZGlzayA9ICZkbC0+ZGlzazsKLQkJZGlzay0+c3RhdHVzIHw9IENPTkZJ R1VSRURfRElTSzsKLQkJZGlzay0+c3RhdHVzICY9IH5TUEFSRV9ESVNLOwotCi0JCS8qIG1hcmsg cmVidWlsZCAqLwotCQl0b19zdGF0ZSA9IGltc21fY2hlY2tfZGVncmFkZWQoc3VwZXIsIGRldiwg ZmFpbGVkKTsKLQkJbWFwLT5tYXBfc3RhdGUgPSBJTVNNX1RfU1RBVEVfREVHUkFERUQ7Ci0JCW1p Z3JhdGUoZGV2LCBzdXBlciwgdG9fc3RhdGUsIE1JR1JfUkVCVUlMRCk7Ci0JCW1pZ3JfbWFwID0g Z2V0X2ltc21fbWFwKGRldiwgMSk7Ci0JCXNldF9pbXNtX29yZF90YmxfZW50KG1hcCwgdS0+c2xv dCwgZGwtPmluZGV4KTsKLQkJc2V0X2ltc21fb3JkX3RibF9lbnQobWlncl9tYXAsIHUtPnNsb3Qs IGRsLT5pbmRleCB8IElNU01fT1JEX1JFQlVJTEQpOwotCi0JCS8qIHVwZGF0ZSB0aGUgZmFtaWx5 X251bSB0byBtYXJrIGEgbmV3IGNvbnRhaW5lcgotCQkgKiBnZW5lcmF0aW9uLCBiZWluZyBjYXJl ZnVsIHRvIHJlY29yZCB0aGUgZXhpc3RpbmcKLQkJICogZmFtaWx5X251bSBpbiBvcmlnX2ZhbWls eV9udW0gdG8gY2xlYW4gdXAgYWZ0ZXIKLQkJICogZWFybGllciBtZGFkbSB2ZXJzaW9ucyB0aGF0 IG5lZ2xlY3RlZCB0byBzZXQgaXQuCi0JCSAqLwotCQlpZiAobXBiLT5vcmlnX2ZhbWlseV9udW0g PT0gMCkKLQkJCW1wYi0+b3JpZ19mYW1pbHlfbnVtID0gbXBiLT5mYW1pbHlfbnVtOwotCQltcGIt PmZhbWlseV9udW0gKz0gc3VwZXItPnJhbmRvbTsKLQotCQkvKiBjb3VudCBhcnJheXMgdXNpbmcg dGhlIHZpY3RpbSBpbiB0aGUgbWV0YWRhdGEgKi8KLQkJZm91bmQgPSAwOwotCQlmb3IgKGEgPSBz dC0+YXJyYXlzOyBhIDsgYSA9IGEtPm5leHQpIHsKLQkJCWRldiA9IGdldF9pbXNtX2RldihzdXBl ciwgYS0+aW5mby5jb250YWluZXJfbWVtYmVyKTsKLQkJCW1hcCA9IGdldF9pbXNtX21hcChkZXYs IDApOwotCi0JCQlpZiAoZ2V0X2ltc21fZGlza19zbG90KG1hcCwgdmljdGltKSA+PSAwKQotCQkJ CWZvdW5kKys7Ci0JCX0KLQotCQkvKiBkZWxldGUgdGhlIHZpY3RpbSBpZiBpdCBpcyBubyBsb25n ZXIgYmVpbmcKLQkJICogdXRpbGl6ZWQgYW55d2hlcmUKLQkJICovCi0JCWlmICghZm91bmQpIHsK LQkJCXN0cnVjdCBkbCAqKmRscDsKLQotCQkJLyogV2Uga25vdyB0aGF0ICdtYW5hZ2VyJyBpc24n dCB0b3VjaGluZyBhbnl0aGluZywKLQkJCSAqIHNvIGl0IGlzIHNhZmUgdG8gZGVsZXRlCi0JCQkg Ki8KLQkJCWZvciAoZGxwID0gJnN1cGVyLT5kaXNrczsgKmRscDsgZGxwID0gJigqZGxwKS0+bmV4 dCkKLQkJCQlpZiAoKCpkbHApLT5pbmRleCA9PSB2aWN0aW0pCi0JCQkJCWJyZWFrOwotCi0JCQkv KiB2aWN0aW0gbWF5IGJlIG9uIHRoZSBtaXNzaW5nIGxpc3QgKi8KLQkJCWlmICghKmRscCkKLQkJ CQlmb3IgKGRscCA9ICZzdXBlci0+bWlzc2luZzsgKmRscDsgZGxwID0gJigqZGxwKS0+bmV4dCkK LQkJCQkJaWYgKCgqZGxwKS0+aW5kZXggPT0gdmljdGltKQotCQkJCQkJYnJlYWs7Ci0JCQlpbXNt X2RlbGV0ZShzdXBlciwgZGxwLCB2aWN0aW0pOwotCQl9CisJCWlmIChhcHBseV91cGRhdGVfYWN0 aXZhdGVfc3BhcmUodSwgc3VwZXIsIHN0LT5hcnJheXMpKQorCQkJc3VwZXItPnVwZGF0ZXNfcGVu ZGluZysrOwogCQlicmVhazsKIAl9CiAJY2FzZSB1cGRhdGVfY3JlYXRlX2FycmF5OiB7CgotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KSW50ZWwgVGVjaG5vbG9neSBQb2xhbmQgc3AuIHogby5vLgp6IHNpZWR6aWJhIHcg R2RhbnNrdQp1bC4gU2xvd2Fja2llZ28gMTczCjgwLTI5OCBHZGFuc2sKClNhZCBSZWpvbm93eSBH ZGFuc2sgUG9sbm9jIHcgR2RhbnNrdSwgClZJSSBXeWR6aWFsIEdvc3BvZGFyY3p5IEtyYWpvd2Vn byBSZWplc3RydSBTYWRvd2VnbywgCm51bWVyIEtSUyAxMDE4ODIKCk5JUCA5NTctMDctNTItMzE2 CkthcGl0YWwgemFrbGFkb3d5IDIwMC4wMDAgemwKClRoaXMgZS1tYWlsIGFuZCBhbnkgYXR0YWNo bWVudHMgbWF5IGNvbnRhaW4gY29uZmlkZW50aWFsIG1hdGVyaWFsIGZvcgp0aGUgc29sZSB1c2Ug b2YgdGhlIGludGVuZGVkIHJlY2lwaWVudChzKS4gQW55IHJldmlldyBvciBkaXN0cmlidXRpb24K Ynkgb3RoZXJzIGlzIHN0cmljdGx5IHByb2hpYml0ZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRl bmRlZApyZWNpcGllbnQsIHBsZWFzZSBjb250YWN0IHRoZSBzZW5kZXIgYW5kIGRlbGV0ZSBhbGwg Y29waWVzLgo=