From owner-freebsd-current Wed Mar 12 12:56:51 2003 Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id F2E7537B401; Wed, 12 Mar 2003 12:56:47 -0800 (PST) Received: from mail.chesapeake.net (chesapeake.net [205.130.220.14]) by mx1.FreeBSD.org (Postfix) with ESMTP id F165043F3F; Wed, 12 Mar 2003 12:56:46 -0800 (PST) (envelope-from jroberson@chesapeake.net) Received: from localhost (jroberson@localhost) by mail.chesapeake.net (8.11.6/8.11.6) with ESMTP id h2CKukw96346; Wed, 12 Mar 2003 15:56:46 -0500 (EST) (envelope-from jroberson@chesapeake.net) Date: Wed, 12 Mar 2003 15:56:46 -0500 (EST) From: Jeff Roberson To: Thomas Quinot Cc: current@FreeBSD.ORG Subject: Re: crash: bwrite: need chained iodone In-Reply-To: <20030312105258.GG51967@melusine.cuivre.fr.eu.org> Message-ID: <20030312155436.S43514-100000@mail.chesapeake.net> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=X-UNKNOWN Content-Transfer-Encoding: QUOTED-PRINTABLE Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Wed, 12 Mar 2003, Thomas Quinot wrote: > Le 2003-03-12, Jeff Roberson =E9crivait : > > > Can you please print bp? I'd like to know what all of the members are.= A > > cluster buf should NEVER have BX_BKGRDWRITE set. This is totally bogus= =2E > > (kgdb) fr > #11 0xc0232072 in bwrite (bp=3D0xce5313e0) at > /usr/src/sys/kern/vfs_bio.c:795 > 795 panic("bwrite: need chained iodone"); > (kgdb) print *bp > $3 =3D {b_io =3D {bio_cmd =3D 2, bio_dev =3D 0xffffffff, bio_disk =3D 0x0= , > bio_blkno =3D 18540672, bio_offset =3D 9492758528, bio_bcount =3D 327= 68, > bio_data =3D 0xd42da000 "", bio_flags =3D 0, bio_error =3D 0, bio_res= id =3D 0, > bio_done =3D 0xc0235db0 , bio_driver1 =3D 0x0, bio_driver= 2 =3D 0x0, > bio_caller1 =3D 0x0, bio_caller2 =3D 0xce5313e0, bio_queue =3D {tqe_n= ext =3D 0x0, > tqe_prev =3D 0xc408200c}, bio_attribute =3D 0x0, bio_from =3D 0x0, > bio_to =3D 0x0, bio_length =3D 0, bio_completed =3D 0, bio_children = =3D 91, > bio_inbed =3D 0, bio_parent =3D 0x0, bio_t0 =3D {sec =3D 0, frac =3D = 0}, > bio_task =3D 0, bio_task_arg =3D 0x0, bio_pblkno =3D 64}, b_op =3D 0x= c03a89f8, > b_magic =3D 280038160, b_iodone =3D 0xc0239320 , > b_offset =3D 688128, b_vnbufs =3D {tqe_next =3D 0x0, tqe_prev =3D 0x0}, > b_left =3D 0x0, b_right =3D 0x0, b_vflags =3D 0, b_freelist =3D { > tqe_next =3D 0xce531228, tqe_prev =3D 0xc03dcb3c}, b_qindex =3D 0, > b_flags =3D 1677721604, b_xflags =3D 0 '\0', b_lock =3D { > lk_interlock =3D 0xc03d750c, lk_flags =3D 0, lk_sharecount =3D 0, > lk_waitcount =3D 0, lk_exclusivecount =3D 0, lk_prio =3D 80, > lk_wmesg =3D 0xc0379b53 "bufwait", lk_timo =3D 0, lk_lockholder =3D 0= xffffffff, > lk_newlock =3D 0x0}, b_bufsize =3D 32768, b_runningbufspace =3D 0, > b_kvabase =3D 0xd42da000 "", b_kvasize =3D 32768, b_lblkno =3D 42, > b_vp =3D 0xc4a21124, b_object =3D 0x0, b_dirtyoff =3D 0, b_dirtyend =3D= 32768, > > b_rcred =3D 0x0, b_wcred =3D 0x0, b_saveaddr =3D 0xbfbfea40, b_pager = =3D { > pg_spc =3D 0x0, pg_reqpage =3D 0}, b_cluster =3D {cluster_head =3D { > tqh_first =3D 0xce67bfe8, tqh_last =3D 0xce6b6b80}, cluster_entry = =3D { > tqe_next =3D 0xce67bfe8, tqe_prev =3D 0xce6b6b80}}, b_pages =3D {0x= c0d14748, > 0xc0acff90, 0xc0a7cbd8, 0xc0bffc20, 0xc1074868, 0xc10106b0, 0xc10700f= 8, > 0xc0f9c040, 0xc0af5808, 0xc0c56c50, 0xc0b47198, 0xc0bdb9e0, 0xc10e7b2= 8, > 0xc0abba70, 0xc09888b8, 0xc09d3600, 0xc0d14748, 0xc0acff90, 0xc0a7cbd= 8, > 0xc0bffc20, 0xc1074868, 0xc10106b0, 0xc10700f8, 0xc0f9c040, 0xc0d2188= 8, > 0xc105cfd0, 0xc1057f18, 0xc109ff60, 0xc0a18948, 0xc0ab3d90, 0xc0a36fd= 8, > 0xc0b91820}, b_npages =3D 8, b_dep =3D {lh_first =3D 0x0}} > (kgdb) > > Hum. Now this is *most* peculiar. bp->b_xflags is 0, so we should never > have entered that 'if', unless there is a race condition somewhere such > that we test b_xflags on a buffer and carry on processing on another... > Can you disable sync on panic to make sure that something has not come along and cleaned this buffer? I suspect that it has been modified after the first panic. Do you know when this first started to happen? Do you have any more clues into what triggered it? Cheers, Jeff To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message