From owner-freebsd-fs@FreeBSD.ORG Mon Oct 3 12:19:09 2011 Return-Path: Delivered-To: fs@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 41D121065670; Mon, 3 Oct 2011 12:19:09 +0000 (UTC) (envelope-from lev@FreeBSD.org) Received: from onlyone.friendlyhosting.spb.ru (onlyone.friendlyhosting.spb.ru [IPv6:2a01:4f8:131:60a2::2]) by mx1.freebsd.org (Postfix) with ESMTP id 911DA8FC14; Mon, 3 Oct 2011 12:19:08 +0000 (UTC) Received: from lion.home.serebryakov.spb.ru (unknown [IPv6:2001:470:923f:1:906c:6af3:5301:18c6]) (Authenticated sender: lev@serebryakov.spb.ru) by onlyone.friendlyhosting.spb.ru (Postfix) with ESMTPA id 8C3F14AC1C; Mon, 3 Oct 2011 16:19:06 +0400 (MSD) Date: Mon, 3 Oct 2011 16:18:59 +0400 From: Lev Serebryakov Organization: FreeBSD Project X-Priority: 3 (Normal) Message-ID: <1223820108.20111003161859@serebryakov.spb.ru> To: Lawrence Stewart In-Reply-To: <4E8986F0.3050007@freebsd.org> References: <1258376930.20111002193223@serebryakov.spb.ru> <228926402.20111002231459@serebryakov.spb.ru> <349860851.20111003113417@serebryakov.spb.ru> <4E8986F0.3050007@freebsd.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----------D513F1DB29DF10BB" Cc: fs@freebsd.org Subject: Re: code in GEOM thread could not use vnode API (Was: alq_open_flags() panics in _mtx_lock_flags()) X-BeenThere: freebsd-fs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: lev@FreeBSD.org List-Id: Filesystems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 03 Oct 2011 12:19:09 -0000 ------------D513F1DB29DF10BB Content-Type: text/plain; charset=windows-1251 Content-Transfer-Encoding: quoted-printable Hello, Lawrence. You wrote 3 =EE=EA=F2=FF=E1=F0=FF 2011 =E3., 13:57:04: > I know nothing about VFS, but wonder if it's something to do with the > credentials you pass in? They looks Ok. Not NULL, at least :) I'm passing "curtrhead->td_ucred". > Lev, are you able to share your code with us? Yes, of course. Minimal code, which trigger this error, attached. Build, load module and PANIC! This is geom_zero module, which try to create ALQ with name "/var/log/zero.alq.log" on it load (not creation! So, you don't need even create such GEOM!). Please note, that "init" callback of GEOM class is called in g_event GEOM thread. Code is for 9.0/10.0 My code is rewritten with usage of working thread already, and it works without any panic. But worker thread looks like overkill for simple case "write 24 bytes record to ALQ for each BIO" to me. So I could prove, that this code PANIC because alq_open_flags() is called from one of three GEOM threads. --=20 // Black Lion AKA Lev Serebryakov ------------D513F1DB29DF10BB Content-Type: application/octet-stream; name="g_alq.c" Content-transfer-encoding: base64 Content-Disposition: attachment; filename="g_alq.c" LyotCiAqIENvcHlyaWdodCAoYykgMjAwNSBQYXdlbCBKYWt1YiBEYXdpZGVrIDxwamRARnJl ZUJTRC5vcmc+CiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqCiAqIFJlZGlzdHJpYnV0aW9u IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnMKICogYXJlIG1ldDoKICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgbm90aWNl LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy LgogKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug dGhlIGFib3ZlIGNvcHlyaWdodAogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAqICAgIGRvY3VtZW50 YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli dXRpb24uCiAqCiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUlMg QU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECiAqIEFOWSBFWFBSRVNTIE9SIElNUExJ RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQogKiBJ TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRQogKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI QUxMIFRIRSBBVVRIT1JTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKICogRk9SIEFOWSBE SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP TlNFUVVFTlRJQUwKICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKICogT1IgU0VSVklDRVM7IExPU1Mg T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCiAq IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF UiBJTiBDT05UUkFDVCwgU1RSSUNUCiAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKICogT1VUIE9G IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT SUJJTElUWSBPRgogKiBTVUNIIERBTUFHRS4KICovCgojaW5jbHVkZSA8c3lzL2NkZWZzLmg+ Cl9fRkJTRElEKCIkRnJlZUJTRCQiKTsKCiNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KI2luY2x1 ZGUgPHN5cy9iaW8uaD4KI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4KI2luY2x1ZGUgPHN5cy9s aW1pdHMuaD4KI2luY2x1ZGUgPHN5cy9tYWxsb2MuaD4KI2luY2x1ZGUgPHN5cy9xdWV1ZS5o PgojaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgojaW5jbHVkZSA8c3lzL3N5c3RtLmg+CiNpbmNs dWRlIDxzeXMvYWxxLmg+CiNpbmNsdWRlIDxzeXMvcHJvYy5oPgoKI2luY2x1ZGUgPGdlb20v Z2VvbS5oPgoKCiNkZWZpbmUJR19aRVJPX0NMQVNTX05BTUUJIkFMUS1QQU5JQyIKClNZU0NU TF9ERUNMKF9rZXJuX2dlb20pOwpTWVNDVExfTk9ERShfa2Vybl9nZW9tLCBPSURfQVVUTywg emVybywgQ1RMRkxBR19SVywgMCwgIkdFT01fQUxRIHN0dWZmIik7CgpzdGF0aWMgdm9pZApn X2FscV9zdGFydChzdHJ1Y3QgYmlvICpicCkKewoJaW50IGVycm9yID0gRU5YSU87CgoJc3dp dGNoIChicC0+YmlvX2NtZCkgewoJY2FzZSBCSU9fUkVBRDoKCWNhc2UgQklPX0RFTEVURToK CWNhc2UgQklPX1dSSVRFOgoJCWJwLT5iaW9fY29tcGxldGVkID0gYnAtPmJpb19sZW5ndGg7 CgkJZXJyb3IgPSAwOwoJCWJyZWFrOwoJY2FzZSBCSU9fR0VUQVRUUjoKCWRlZmF1bHQ6CgkJ ZXJyb3IgPSBFT1BOT1RTVVBQOwoJCWJyZWFrOwoJfQoJZ19pb19kZWxpdmVyKGJwLCBlcnJv cik7Cn0KCnN0YXRpYyB2b2lkCmdfYWxxX2luaXQoc3RydWN0IGdfY2xhc3MgKm1wKQp7Cglz dHJ1Y3QgZ19nZW9tICpncDsKCXN0cnVjdCBnX3Byb3ZpZGVyICpwcDsKCXN0cnVjdCBhbHEg KmFscTsKCWludCBlcnJvcjsKCglnX3RvcG9sb2d5X2Fzc2VydCgpOwoJZ3AgPSBnX25ld19n ZW9tZihtcCwgImdhbHEiKTsKCWdwLT5zdGFydCA9IGdfYWxxX3N0YXJ0OwoJZ3AtPmFjY2Vz cyA9IGdfc3RkX2FjY2VzczsKCXBwID0gZ19uZXdfcHJvdmlkZXJmKGdwLCAiJXMiLCBncC0+ bmFtZSk7CglwcC0+bWVkaWFzaXplID0gMTE1MjkyMTUwNDYwNjg0Njk3NkxMVTsKCXBwLT5z ZWN0b3JzaXplID0gNTEyOwoJZ19lcnJvcl9wcm92aWRlcihwcCwgMCk7CgkKCS8qIFRyaWdn ZXIgcGFuaWMgKi8KCWVycm9yID0gYWxxX29wZW5fZmxhZ3MoJmFscSwgICIvdmFyL2xvZy96 ZXJvLmFscS5sb2ciLAoJICAgIGN1cnRocmVhZC0+dGRfdWNyZWQsIEFMUV9ERUZBVUxUX0NN T0RFLAoJICAgIDE2LCBBTFFfT1JERVJFRCk7CgkgICAgCglpZiAoIWVycm9yKQoJCWFscV9j bG9zZShhbHEpOwp9CgpzdGF0aWMgaW50CmdfYWxxX2Rlc3Ryb3lfZ2VvbShzdHJ1Y3QgZ2N0 bF9yZXEgKnJlcSBfX3VudXNlZCwgc3RydWN0IGdfY2xhc3MgKm1wIF9fdW51c2VkLAogICAg c3RydWN0IGdfZ2VvbSAqZ3ApCnsKCXN0cnVjdCBnX3Byb3ZpZGVyICpwcDsKCglnX3RvcG9s b2d5X2Fzc2VydCgpOwoJaWYgKGdwID09IE5VTEwpCgkJcmV0dXJuICgwKTsKCXBwID0gTElT VF9GSVJTVCgmZ3AtPnByb3ZpZGVyKTsKCWlmIChwcCA9PSBOVUxMKQoJCXJldHVybiAoMCk7 CglpZiAocHAtPmFjciA+IDAgfHwgcHAtPmFjdyA+IDAgfHwgcHAtPmFjZSA+IDApCgkJcmV0 dXJuIChFQlVTWSk7CglnX3dpdGhlcl9nZW9tKGdwLCBFTlhJTyk7CglyZXR1cm4gKDApOwp9 CgpzdGF0aWMgc3RydWN0IGdfY2xhc3MgZ19hbHFfY2xhc3MgPSB7CgkubmFtZSA9IEdfWkVS T19DTEFTU19OQU1FLAoJLnZlcnNpb24gPSBHX1ZFUlNJT04sCgkuaW5pdCA9IGdfYWxxX2lu aXQsCgkuZGVzdHJveV9nZW9tID0gZ19hbHFfZGVzdHJveV9nZW9tCn07CgpERUNMQVJFX0dF T01fQ0xBU1MoZ19hbHFfY2xhc3MsIGdfYWxxKTsKTU9EVUxFX0RFUEVORChnX2FscSwgYWxx LCAxLCAxLCAxKTsK ------------D513F1DB29DF10BB Content-Type: application/octet-stream; name=Makefile Content-transfer-encoding: base64 Content-Disposition: attachment; filename=Makefile Q0xBU1M9CWFscQoKS0VSTkJVSUxEUk9PVCE9CW1ha2UgLUMgL3Vzci9zcmMvc3lzIC1WIC5P QkpESVIKS0VSTk5BTUUhPQkJdW5hbWUgLWkKLmlmIGV4aXN0cygke0tFUk5CVUlMRFJPT1R9 LyR7S0VSTk5BTUV9L29wdF9nbG9iYWwuaCkgJiYgIWRlZmluZWQoS0VSTkJVSUxERElSKQpL RVJOQlVJTERESVI6PSR7S0VSTkJVSUxEUk9PVH0vJHtLRVJOTkFNRX0KLmVuZGlmCgpLTU9E RElSPz0JL2Jvb3QvbW9kdWxlcwoKS01PRD0JZ2VvbV8ke0NMQVNTfQpTUkNTPQlnXyR7Q0xB U1N9LmMKCi5pbmNsdWRlIDxic2Qua21vZC5taz4K ------------D513F1DB29DF10BB--