Date: Mon, 16 Dec 2013 11:08:11 +0100 (CET) From: krichy@tvnetwork.hu To: freebsd-fs@freebsd.org Subject: kern/184677 Message-ID: <alpine.DEB.2.10.1312161059150.7004@krichy.tvnetwork.hu>
next in thread | raw e-mail | index | archive | help
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --1030603365-1718570176-1387188491=:7004 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII Dear devs, I've attached a patch, which makes the recursive lockmgr disappear, and makes the reported bug to disappear. I dont know if I followed any guidelines well, or not, but at least it works for me. Please some ZFS/FreeBSD fs expert review it, and fix it where it needed. But unfortunately, my original problem is still not solved, maybe the same as Ryan's: http://lists.freebsd.org/pipermail/freebsd-fs/2013-December/018707.html Tracing the problem down is that zfsctl_snapdir_lookup() tries to acquire spa_namespace_lock while when finishing a zfs send -R does a zfsdev_close(), and that also holds the same mutex. And this causes a deadlock scenario. I looked at illumos's code, and for some reason they use another mutex on zfsdev_close(), which therefore may not deadlock with zfsctl_snapdir_lookup(). But I am still investigating the problem. I would like to help making ZFS more stable on freebsd also with its whole functionality. I would be very thankful if some expert would give some advice, how to solve these bugs. PJD, Steven, Xin? Thanks in advance, Kojedzinszky Richard Euronet Magyarorszag Informatikai Zrt. --1030603365-1718570176-1387188491=:7004 Content-Type: TEXT/x-diff; name=184677.patch Content-Transfer-Encoding: BASE64 Content-ID: <alpine.DEB.2.10.1312161108110.7004@krichy.tvnetwork.hu> Content-Description: Content-Disposition: attachment; filename=184677.patch Y29tbWl0IDc5NjVlMDFmY2E3OTE4N2Q4MTViOGE4NjU3MGY1MDU0N2QwMGU1 MzENCkF1dGhvcjogUmljaGFyZCBLb2plZHppbnN6a3kgPGtyaWNoeUBjZmxp bnV4Lmh1Pg0KRGF0ZTogICBNb24gRGVjIDE2IDA5OjU5OjU3IDIwMTMgKzAx MDANCg0KICAgIFpGUyBsb2NrIG9yZGVyaW5nIGZpeA0KDQpkaWZmIC0tZ2l0 IGEvc3lzL2NkZGwvY29tcGF0L29wZW5zb2xhcmlzL2tlcm4vb3BlbnNvbGFy aXNfbG9va3VwLmMgYi9zeXMvY2RkbC9jb21wYXQvb3BlbnNvbGFyaXMva2Vy bi9vcGVuc29sYXJpc19sb29rdXAuYw0KaW5kZXggOTQzODNkNi4uMjI1NTIx YSAxMDA2NDQNCi0tLSBhL3N5cy9jZGRsL2NvbXBhdC9vcGVuc29sYXJpcy9r ZXJuL29wZW5zb2xhcmlzX2xvb2t1cC5jDQorKysgYi9zeXMvY2RkbC9jb21w YXQvb3BlbnNvbGFyaXMva2Vybi9vcGVuc29sYXJpc19sb29rdXAuYw0KQEAg LTgxLDYgKzgxLDggQEAgdHJhdmVyc2Uodm5vZGVfdCAqKmN2cHAsIGludCBs a3R5cGUpDQogCSAqIHByb2dyZXNzIG9uIHRoaXMgdm5vZGUuDQogCSAqLw0K IA0KKwl2bl9sb2NrKGN2cCwgbGt0eXBlKTsNCisNCiAJZm9yICg7Oykgew0K IAkJLyoNCiAJCSAqIFJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgbW91bnQgY2hh aW4/DQpAQCAtODksMTMgKzkxLDcgQEAgdHJhdmVyc2Uodm5vZGVfdCAqKmN2 cHAsIGludCBsa3R5cGUpDQogCQlpZiAodmZzcCA9PSBOVUxMKQ0KIAkJCWJy ZWFrOw0KIAkJZXJyb3IgPSB2ZnNfYnVzeSh2ZnNwLCAwKTsNCi0JCS8qDQot CQkgKiB0dnAgaXMgTlVMTCBmb3IgKmN2cHAgdm5vZGUsIHdoaWNoIHdlIGNh bid0IHVubG9jay4NCi0JCSAqLw0KLQkJaWYgKHR2cCAhPSBOVUxMKQ0KLQkJ CXZwdXQoY3ZwKTsNCi0JCWVsc2UNCi0JCQl2cmVsZShjdnApOw0KKwkJdnB1 dChjdnApOw0KIAkJaWYgKGVycm9yKQ0KIAkJCXJldHVybiAoZXJyb3IpOw0K IA0KZGlmZiAtLWdpdCBhL3N5cy9jZGRsL2NvbnRyaWIvb3BlbnNvbGFyaXMv dXRzL2NvbW1vbi9mcy9nZnMuYyBiL3N5cy9jZGRsL2NvbnRyaWIvb3BlbnNv bGFyaXMvdXRzL2NvbW1vbi9mcy9nZnMuYw0KaW5kZXggNTk5NDRhMS4uY2U0 M2ZmZiAxMDA2NDQNCi0tLSBhL3N5cy9jZGRsL2NvbnRyaWIvb3BlbnNvbGFy aXMvdXRzL2NvbW1vbi9mcy9nZnMuYw0KKysrIGIvc3lzL2NkZGwvY29udHJp Yi9vcGVuc29sYXJpcy91dHMvY29tbW9uL2ZzL2dmcy5jDQpAQCAtNDQ4LDcg KzQ0OCw3IEBAIGdmc19sb29rdXBfZG90KHZub2RlX3QgKip2cHAsIHZub2Rl X3QgKmR2cCwgdm5vZGVfdCAqcHZwLCBjb25zdCBjaGFyICpubSkNCiAJCQlW Tl9IT0xEKHB2cCk7DQogCQkJKnZwcCA9IHB2cDsNCiAJCX0NCi0JCXZuX2xv Y2soKnZwcCwgTEtfRVhDTFVTSVZFIHwgTEtfUkVUUlkpOw0KKwkJdm5fbG9j aygqdnBwLCBMS19FWENMVVNJVkUgfCBMS19SRVRSWSB8IExLX0NBTlJFQ1VS U0UpOw0KIAkJcmV0dXJuICgwKTsNCiAJfQ0KIA0KZGlmZiAtLWdpdCBhL3N5 cy9jZGRsL2NvbnRyaWIvb3BlbnNvbGFyaXMvdXRzL2NvbW1vbi9mcy96ZnMv emZzX2N0bGRpci5jIGIvc3lzL2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy91 dHMvY29tbW9uL2ZzL3pmcy96ZnNfY3RsZGlyLmMNCmluZGV4IDI4YWIxZmEu LjlhMDU5NzYgMTAwNjQ0DQotLS0gYS9zeXMvY2RkbC9jb250cmliL29wZW5z b2xhcmlzL3V0cy9jb21tb24vZnMvemZzL3pmc19jdGxkaXIuYw0KKysrIGIv c3lzL2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy91dHMvY29tbW9uL2ZzL3pm cy96ZnNfY3RsZGlyLmMNCkBAIC0xMTIsNiArMTEyLDMwIEBAIHNuYXBlbnRy eV9jb21wYXJlKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpDQogCQly ZXR1cm4gKDApOw0KIH0NCiANCitzdGF0aWMgdm9pZA0KK3NuYXBkaXJfZW50 cnlfcmVtb3ZlX2ZyZWUoemZzY3RsX3NuYXBkaXJfdCAqc2RwLCB6ZnNfc25h cGVudHJ5X3QgKnNlcCkNCit7DQorCWF2bF9yZW1vdmUoJnNkcC0+c2Rfc25h cHMsIHNlcCk7DQorCWttZW1fZnJlZShzZXAtPnNlX25hbWUsIHN0cmxlbihz ZXAtPnNlX25hbWUpICsgMSk7DQorCWttZW1fZnJlZShzZXAsIHNpemVvZiAo emZzX3NuYXBlbnRyeV90KSk7DQorfQ0KKw0KK3N0YXRpYyB6ZnNjdGxfc25h cGRpcl90Kg0KK3NuYXBzaG90X2dldF9zbmFwZGlyKHZub2RlX3QgKnZwLCB2 bm9kZV90ICoqZHZwcCkNCit7DQorCWdmc19kaXJfdCAqZHAgPSB2cC0+dl9k YXRhOw0KKwkqZHZwcCA9IGRwLT5nZnNkX2ZpbGUuZ2ZzX3BhcmVudDsNCisJ emZzY3RsX3NuYXBkaXJfdCAqc2RwOw0KKw0KKwlWTl9IT0xEKCpkdnBwKTsN CisJVk9QX1VOTE9DSyh2cCwgMCk7DQorCXZuX2xvY2soKmR2cHAsIExLX1NI QVJFRCB8IExLX1JFVFJZIHwgTEtfQ0FOUkVDVVJTRSk7DQorCXNkcCA9ICgq ZHZwcCktPnZfZGF0YTsNCisJVk9QX1VOTE9DSygqZHZwcCwgMCk7DQorDQor CXJldHVybiAoc2RwKTsNCit9DQorDQogI2lmZGVmIHN1bg0KIHZub2Rlb3Bz X3QgKnpmc2N0bF9vcHNfcm9vdDsNCiB2bm9kZW9wc190ICp6ZnNjdGxfb3Bz X3NuYXBkaXI7DQpAQCAtMTAxMiw3ICsxMDM2LDEzIEBAIHpmc2N0bF9zbmFw ZGlyX2xvb2t1cChhcCkNCiAJCQkvKg0KIAkJCSAqIFRoZSBzbmFwc2hvdCB3 YXMgdW5tb3VudGVkIGJlaGluZCBvdXIgYmFja3MsDQogCQkJICogdHJ5IHRv IHJlbW91bnQgaXQuDQorCQkJICogQ29uY3VycmVudCB6ZnNjdGxfc25hcHNo b3RfaW5hY3RpdmUoKSB3b3VsZCByZW1vdmUgb3VyIGVudHJ5DQorCQkJICog c28gZG8gdGhpcyBvdXJzZWx2ZXMsIGFuZCBtYWtlIGEgZnJlc2ggbmV3IG1v dW50Lg0KIAkJCSAqLw0KKwkJCXNuYXBkaXJfZW50cnlfcmVtb3ZlX2ZyZWUo c2RwLCBzZXApOw0KKwkJCXZwdXQoKnZwcCk7DQorCQkJLyogZmluZCBuZXcg cGxhY2UgZm9yIHNlcCBlbnRyeSAqLw0KKwkJCWF2bF9maW5kKCZzZHAtPnNk X3NuYXBzLCAmc2VhcmNoLCAmd2hlcmUpOw0KIAkJCVZFUklGWSh6ZnNjdGxf c25hcHNob3Rfem5hbWUoZHZwLCBubSwgTUFYTkFNRUxFTiwgc25hcG5hbWUp ID09IDApOw0KIAkJCWdvdG8gZG9tb3VudDsNCiAJCX0gZWxzZSB7DQpAQCAt MTAyOCw2ICsxMDU4LDcgQEAgemZzY3RsX3NuYXBkaXJfbG9va3VwKGFwKQ0K IAkJcmV0dXJuIChlcnIpOw0KIAl9DQogDQorZG9tb3VudDoNCiAJLyoNCiAJ ICogVGhlIHJlcXVlc3RlZCBzbmFwc2hvdCBpcyBub3QgY3VycmVudGx5IG1v dW50ZWQsIGxvb2sgaXQgdXAuDQogCSAqLw0KQEAgLTEwNjgsNyArMTA5OSw2 IEBAIHpmc2N0bF9zbmFwZGlyX2xvb2t1cChhcCkNCiAJYXZsX2luc2VydCgm c2RwLT5zZF9zbmFwcywgc2VwLCB3aGVyZSk7DQogDQogCWRtdV9vYmpzZXRf cmVsZShzbmFwLCBGVEFHKTsNCi1kb21vdW50Og0KIAltb3VudHBvaW50X2xl biA9IHN0cmxlbihkdnAtPnZfdmZzcC0+bW50X3N0YXQuZl9tbnRvbm5hbWUp ICsNCiAJICAgIHN0cmxlbigiLyIgWkZTX0NUTERJUl9OQU1FICIvc25hcHNo b3QvIikgKyBzdHJsZW4obm0pICsgMTsNCiAJbW91bnRwb2ludCA9IGttZW1f YWxsb2MobW91bnRwb2ludF9sZW4sIEtNX1NMRUVQKTsNCkBAIC0xMzUwLDkg KzEzODAsNyBAQCB6ZnNjdGxfc25hcGRpcl9pbmFjdGl2ZShhcCkNCiAJICov DQogCW11dGV4X2VudGVyKCZzZHAtPnNkX2xvY2spOw0KIAl3aGlsZSAoKHNl cCA9IGF2bF9maXJzdCgmc2RwLT5zZF9zbmFwcykpICE9IE5VTEwpIHsNCi0J CWF2bF9yZW1vdmUoJnNkcC0+c2Rfc25hcHMsIHNlcCk7DQotCQlrbWVtX2Zy ZWUoc2VwLT5zZV9uYW1lLCBzdHJsZW4oc2VwLT5zZV9uYW1lKSArIDEpOw0K LQkJa21lbV9mcmVlKHNlcCwgc2l6ZW9mICh6ZnNfc25hcGVudHJ5X3QpKTsN CisJCXNuYXBkaXJfZW50cnlfcmVtb3ZlX2ZyZWUoc2RwLCBzZXApOw0KIAl9 DQogCW11dGV4X2V4aXQoJnNkcC0+c2RfbG9jayk7DQogCWdmc19kaXJfaW5h Y3RpdmUodnApOw0KQEAgLTE0NjMsMTcgKzE0OTEsMTkgQEAgemZzY3RsX3Nu YXBzaG90X2luYWN0aXZlKGFwKQ0KIAl6ZnNfc25hcGVudHJ5X3QgKnNlcCwg Km5leHQ7DQogCWludCBsb2NrZWQ7DQogCXZub2RlX3QgKmR2cDsNCisJZ2Zz X2Rpcl90ICpkcDsNCiANCi0JaWYgKHZwLT52X2NvdW50ID4gMCkNCi0JCWdv dG8gZW5kOw0KLQ0KLQlWRVJJRlkoZ2ZzX2Rpcl9sb29rdXAodnAsICIuLiIs ICZkdnAsIGNyLCAwLCBOVUxMLCBOVUxMKSA9PSAwKTsNCi0Jc2RwID0gZHZw LT52X2RhdGE7DQotCVZPUF9VTkxPQ0soZHZwLCAwKTsNCisJLyogVGhpcyBp cyBmb3IgYWNjZXNzaW5nIHRoZSByZWFsIHBhcmVudCBkaXJlY3RseSwgd2l0 aG91dCBhIHBvc3NpYmxlIGRlYWRsb2NrDQorCSAqIHdpdGggemZzY3RsX3Nu YXBkaXJfbG9va3VwKCkuIFRoZSByZWxlYXNlIG9mIGxvY2sgb24gdnAgYW5k IGxvY2sgb24gZHZwIHByb3ZpZGVzDQorCSAqIHRoZSBzYW1lIGxvY2sgb3Jk ZXIgYXMgaW4gemZzY3RsX3NuYXBzaG90X2xvb2t1cCgpLg0KKwkgKi8NCisJ c2RwID0gc25hcHNob3RfZ2V0X3NuYXBkaXIodnAsICZkdnApOw0KIA0KIAlp ZiAoIShsb2NrZWQgPSBNVVRFWF9IRUxEKCZzZHAtPnNkX2xvY2spKSkNCiAJ CW11dGV4X2VudGVyKCZzZHAtPnNkX2xvY2spOw0KIA0KKwl2bl9sb2NrKHZw LCBMS19FWENMVVNJVkUgfCBMS19SRVRSWSk7DQorDQogCUFTU0VSVCghdm5f aXNtbnRwdCh2cCkpOw0KIA0KIAlzZXAgPSBhdmxfZmlyc3QoJnNkcC0+c2Rf c25hcHMpOw0KQEAgLTE0ODEsOSArMTUxMSw3IEBAIHpmc2N0bF9zbmFwc2hv dF9pbmFjdGl2ZShhcCkNCiAJCW5leHQgPSBBVkxfTkVYVCgmc2RwLT5zZF9z bmFwcywgc2VwKTsNCiANCiAJCWlmIChzZXAtPnNlX3Jvb3QgPT0gdnApIHsN Ci0JCQlhdmxfcmVtb3ZlKCZzZHAtPnNkX3NuYXBzLCBzZXApOw0KLQkJCWtt ZW1fZnJlZShzZXAtPnNlX25hbWUsIHN0cmxlbihzZXAtPnNlX25hbWUpICsg MSk7DQotCQkJa21lbV9mcmVlKHNlcCwgc2l6ZW9mICh6ZnNfc25hcGVudHJ5 X3QpKTsNCisJCQlzbmFwZGlyX2VudHJ5X3JlbW92ZV9mcmVlKHNkcCwgc2Vw KTsNCiAJCQlicmVhazsNCiAJCX0NCiAJCXNlcCA9IG5leHQ7DQpAQCAtMTQ5 NCw3ICsxNTIyLDYgQEAgemZzY3RsX3NuYXBzaG90X2luYWN0aXZlKGFwKQ0K IAkJbXV0ZXhfZXhpdCgmc2RwLT5zZF9sb2NrKTsNCiAJVk5fUkVMRShkdnAp Ow0KIA0KLWVuZDoNCiAJLyoNCiAJICogRGlzcG9zZSBvZiB0aGUgdm5vZGUg Zm9yIHRoZSBzbmFwc2hvdCBtb3VudCBwb2ludC4NCiAJICogVGhpcyBpcyBz YWZlIHRvIGRvIGJlY2F1c2Ugb25jZSB0aGlzIGVudHJ5IGhhcyBiZWVuIHJl bW92ZWQNCkBAIC0xNTk1LDIwICsxNjIyLDE4IEBAIHpmc2N0bF9zbmFwc2hv dF9sb29rdXAoYXApDQogc3RhdGljIGludA0KIHpmc2N0bF9zbmFwc2hvdF92 cHRvY25wKHN0cnVjdCB2b3BfdnB0b2NucF9hcmdzICphcCkNCiB7DQotCXpm c3Zmc190ICp6ZnN2ZnMgPSBhcC0+YV92cC0+dl92ZnNwLT52ZnNfZGF0YTsN Ci0Jdm5vZGVfdCAqZHZwLCAqdnA7DQorCXZub2RlX3QgKnZwID0gYXAtPmFf dnA7DQorCXZub2RlX3QgKmR2cDsNCiAJemZzY3RsX3NuYXBkaXJfdCAqc2Rw Ow0KIAl6ZnNfc25hcGVudHJ5X3QgKnNlcDsNCiAJaW50IGVycm9yOw0KIA0K LQlBU1NFUlQoemZzdmZzLT56X2N0bGRpciAhPSBOVUxMKTsNCi0JZXJyb3Ig PSB6ZnNjdGxfcm9vdF9sb29rdXAoemZzdmZzLT56X2N0bGRpciwgInNuYXBz aG90IiwgJmR2cCwNCi0JICAgIE5VTEwsIDAsIE5VTEwsIGtjcmVkLCBOVUxM LCBOVUxMLCBOVUxMKTsNCi0JaWYgKGVycm9yICE9IDApDQotCQlyZXR1cm4g KGVycm9yKTsNCi0Jc2RwID0gZHZwLT52X2RhdGE7DQorCXNkcCA9IHNuYXBz aG90X2dldF9zbmFwZGlyKHZwLCAmZHZwKTsNCiANCiAJbXV0ZXhfZW50ZXIo JnNkcC0+c2RfbG9jayk7DQorDQorCXZuX2xvY2sodnAsIExLX0VYQ0xVU0lW RSB8IExLX1JFVFJZKTsNCisNCiAJc2VwID0gYXZsX2ZpcnN0KCZzZHAtPnNk X3NuYXBzKTsNCiAJd2hpbGUgKHNlcCAhPSBOVUxMKSB7DQogCQl2cCA9IHNl cC0+c2Vfcm9vdDsNCg== --1030603365-1718570176-1387188491=:7004--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.DEB.2.10.1312161059150.7004>