Date: Wed, 12 Mar 2003 15:56:46 -0500 (EST) From: Jeff Roberson <jroberson@chesapeake.net> To: Thomas Quinot <thomas@FreeBSD.ORG> Cc: current@FreeBSD.ORG Subject: Re: crash: bwrite: need chained iodone Message-ID: <20030312155436.S43514-100000@mail.chesapeake.net> In-Reply-To: <20030312105258.GG51967@melusine.cuivre.fr.eu.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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 <bufdonebio>, 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 <cluster_callback>, > 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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030312155436.S43514-100000>