Le 2003-03-12, Jeff Roberson écrivait :

> 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.

(kgdb) fr    
#11 0xc0232072 in bwrite (bp=0xce5313e0) at
/usr/src/sys/kern/vfs_bio.c:795
795                             panic("bwrite: need chained iodone");
(kgdb) print *bp
$3 = {b_io = {bio_cmd = 2, bio_dev = 0xffffffff, bio_disk = 0x0, 
    bio_blkno = 18540672, bio_offset = 9492758528, bio_bcount = 32768, 
    bio_data = 0xd42da000 "", bio_flags = 0, bio_error = 0, bio_resid = 0, 
    bio_done = 0xc0235db0 <bufdonebio>, bio_driver1 = 0x0, bio_driver2 = 0x0, 
    bio_caller1 = 0x0, bio_caller2 = 0xce5313e0, bio_queue = {tqe_next = 0x0, 
      tqe_prev = 0xc408200c}, bio_attribute = 0x0, bio_from = 0x0, 
    bio_to = 0x0, bio_length = 0, bio_completed = 0, bio_children = 91, 
    bio_inbed = 0, bio_parent = 0x0, bio_t0 = {sec = 0, frac = 0}, 
    bio_task = 0, bio_task_arg = 0x0, bio_pblkno = 64}, b_op = 0xc03a89f8, 
  b_magic = 280038160, b_iodone = 0xc0239320 <cluster_callback>, 
  b_offset = 688128, b_vnbufs = {tqe_next = 0x0, tqe_prev = 0x0}, 
  b_left = 0x0, b_right = 0x0, b_vflags = 0, b_freelist = {
    tqe_next = 0xce531228, tqe_prev = 0xc03dcb3c}, b_qindex = 0, 
  b_flags = 1677721604, b_xflags = 0 '\0', b_lock = {
    lk_interlock = 0xc03d750c, lk_flags = 0, lk_sharecount = 0, 
    lk_waitcount = 0, lk_exclusivecount = 0, lk_prio = 80, 
    lk_wmesg = 0xc0379b53 "bufwait", lk_timo = 0, lk_lockholder = 0xffffffff, 
    lk_newlock = 0x0}, b_bufsize = 32768, b_runningbufspace = 0, 
  b_kvabase = 0xd42da000 "", b_kvasize = 32768, b_lblkno = 42, 
  b_vp = 0xc4a21124, b_object = 0x0, b_dirtyoff = 0, b_dirtyend = 32768,

  b_rcred = 0x0, b_wcred = 0x0, b_saveaddr = 0xbfbfea40, b_pager = {
    pg_spc = 0x0, pg_reqpage = 0}, b_cluster = {cluster_head = {
      tqh_first = 0xce67bfe8, tqh_last = 0xce6b6b80}, cluster_entry = {
      tqe_next = 0xce67bfe8, tqe_prev = 0xce6b6b80}}, b_pages = {0xc0d14748, 
    0xc0acff90, 0xc0a7cbd8, 0xc0bffc20, 0xc1074868, 0xc10106b0, 0xc10700f8, 
    0xc0f9c040, 0xc0af5808, 0xc0c56c50, 0xc0b47198, 0xc0bdb9e0, 0xc10e7b28, 
    0xc0abba70, 0xc09888b8, 0xc09d3600, 0xc0d14748, 0xc0acff90, 0xc0a7cbd8, 
    0xc0bffc20, 0xc1074868, 0xc10106b0, 0xc10700f8, 0xc0f9c040, 0xc0d21888, 
    0xc105cfd0, 0xc1057f18, 0xc109ff60, 0xc0a18948, 0xc0ab3d90, 0xc0a36fd8, 
    0xc0b91820}, b_npages = 8, b_dep = {lh_first = 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...

Hope this helps...

Thomas.

-- 
    [EMAIL PROTECTED]

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to