[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: LVM 0.9.1beta7 and ext3 0.0.6b

On Tue, 8 May 2001, Stephen C. Tweedie wrote:

> On Mon, May 07, 2001 at 12:54:07PM -0700, Jay Weber wrote:
> > I'm still digging into this one.  Here's what I've been able to discover.
> > With Stephen's suggested patch applied to __invalidate_buffers() we still
> > see the "refile free buffer" at times.
> With what backtrace?  Can you trap it to see?

I've attached above a minicom capture of one of my kdb exploits.  It
should contain more details for you that you're interested in.  The
particular failure in this case happened during shutdown with it does a
forceful umount of remaining devices.  I had ran the vgscan and friends
prior to the shutdown without triggering the "refile buffer" but I gather
it just got caught a little later in the game during the umount.

> > What I'm seeing in kdb output is that the buffer head that is failing in
> > the refile_buffer() test has a b_dev == B_FREE and b_list == BUF_LOCKED.
> > All the other bits appear clear (in the kdbm_jfs bh command output).
> Is there any buffer state in the bh?

Nope, all "."'s were printed.

> > So, not really knowing what all I'm doing in this case I started adding
> > some hunks of code to __invalidate_buffers.  It currently looks something
> > like the following:
> >
> >                         if (!bh->b_count && bh->b_jlist == BJ_None &&
> >                             (destroy_dirty_buffers || !buffer_dirty(bh)))
> It's conceivable that the b_jlist check is necessary.  It rather
> depends on where __invalidate_buffers is being called.  That's
> definitely something for me to add in the ext3 tree, though, as a
> safety-net.
> Did this ever happen before 0.0.6?  The new dirty buffer handling code
> could well be relevant here, as ext3 now keeps its dirty state
> separate and so a journaled buffer is no longer necessarily going to
> look dirty to invalidate_buffers().

I haven't check with 0.0.5.x to see.  I can add this to my todo list

    EBP       EIP         Function(args)
0xc73adea8 0xc01310d9  refile_buffer+0x19( 0xc60d38e0)
0xc73adec0 0xc0165a41  cleanup_transaction+0x141( 0xc7f9cc80, 0xc1717320)
0xc73adee8 0xc0165c3d  log_do_checkpoint+0x1c9( 0xc7f9cc80, 0xa00, 0xc7f89a00)
0xc73adf04 0xc0161e40  journal_flush+0x68( 0xc7f9cc80)
0xc73adf14 0xc015d7bf  ext3_mark_recovery_complete+0x13( 0xc7f89a00, 0xc7f88400)
0xc73adf40 0xc015da0e  ext3_remount+0xf2( 0xc7f89a00, 0xc73adf64, 0x0)
0xc73adf58 0xc0133c39  do_remount_sb+0x71( 0xc7f89a00, 0x1, 0x0, 0x302, 0xfffffffa)
0xc73adf7c 0xc013384b  do_umount+0x9b( 0x302, 0x0, 0x1)
0xc73adfa0 0xc0133967  umount_dev+0x63( 0x302, 0x1, 0xc73ac000, 0x8050788)
0xc73adfbc 0xc0133a5e  sys_umount+0xaa( 0x8050900, 0x1, 0x8050930, 0x8050788, 0x0)
0x8050900 0xc010bac0  system_call
kdb> bh 0xc60d38e0
struct buffer_head 0xc60d38e0 for 124 bytes
  dev   = ff:ff                blk   = 0x0003006b   size  = 0x1000
  data  = c722d000
  list  = 1   (BUF_LOCKED )    state = ...........       count = 0    
  jlist = 0   (BJ_None    )    transaction      = 00000000
  frozen data       = 00000000    cp_transaction   = c1717320
  committed data    = 00000000    next_transaction = 00000000
  alloc transacion  = 0    alloc2_transact  = 0
  free transaction  = 0    free2_transaction= 0
kdb> tr 0xc1717320
Transaction at 0xc1717320 (journal 0xc7f9cc80) for 80 bytes:
 ID: 7311    State:  T_FINISH   Buffers: 0     Log at: 2184 
 Updates: 0       Credits: 7    
 Checkpoint list:     1 buffers
kdb> ps
Task Addr     Pid       Parent   cpu  lcpu    Tss     Command
0xc7fea000 0000000001 0000000000 0000 0000 0xc7fea1e0 init
0xc7f98000 0000000002 0000000001 0000 0000 0xc7f981e0 kflushd
0xc7f96000 0000000003 0000000001 0000 0000 0xc7f961e0 kupdate
0xc7f94000 0000000004 0000000001 0000 0000 0xc7f941e0 kswapd
0xc76ce000 0000000005 0000000001 0000 0000 0xc76ce1e0 kjournald
0xc0a5c000 0000014448 0000000001 0000 0000 0xc0a5c1e0 rc
0xc6782000 0000014773 0000014448 0000 0000 0xc67821e0 S01reboot
0xc73ac000 0000014786 0000014773 0000 0000 0xc73ac1e0 umount
kdb> btp 14786
    EBP       EIP         Function(args)
0xc0114c66 0xc0116daf  schedule+0x197)
0x33e8096a 0x8d000090  schedule
kdb> btp 17 4773
    EBP       EIP         Function(args)
0xc6783f6c 0xc0116daf  schedule+0x197( 0xffffffff, 0x0, 0xbffff2e4)
0xc6783fa0 0xc011e1ce  do_wait+0x2aa( 0xffffffff, 0xbffff2e4, 0x0, 0x0)
0xc6783fbc 0xc011e22d  sys_wait4+0x19( 0xffffffff, 0xbffff2e4, 0x0, 0x0, 0xbffff2e4)
0xbffff298 0xc010bac0  system_call
kdb> btp 5
    EBP       EIP         Function(args)
0xc76cffa4 0xc0116daf  schedule+0x197( 0xc7f9ccbc, 0xc7f9cc80)
0xc76cffbc 0xc0117272  interruptible_sleep_on+0x36( 0xc7f9ccc4, 0xc7f9ccbc, 0x3)
0xc76cffec 0xc0160b39  kjournald+0x119( 0xc7f9cc80, 0xc7f9cc80, 0xc7f9cc80, 0x8d0080, 0x0)
0xc7febe70 0xc010a6d3  kernel_thread+0x23( 0x3e8, 0x0, 0x1, 0xc02864d0, 0xc01a427c)
0xc029be00 0xc01a3e1c  ide_dma_intr( 0x0, 0x6c614, 0x0, 0x0, 0x0)
0x0 0xc029be00  ide_hwifs

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]