Re: Loop driver UP deadlock? -- 2.3.99pre[23]

From: Steve Dodd (steved@loth.demon.co.uk)
Date: Sun Mar 26 2000 - 06:34:19 EST


On Sun, Mar 26, 2000 at 01:21:09AM -0800, Daniel Schepler wrote:

> I recently tried to rebuild the Debian boot disks, and discovered that
> it consistently causes a hang at least with 2.3.99pre2 and later. I
> haven't tried it yet with earlier kernels.

Yeah, some other people have noticed this. I can reproduce it with a simple
test. I'm sure the blockdev and VFS gurus are aware of it, but they've been
strangely silent. I've had a quick look and am horribly confused. I tried
mapping out the bits of the call tree which looked relevant and got as far as
 this ..

user app calls write(), etc.
  sys_write
   generic_file_write
    __grab_cache_page
     page_alloc
      __alloc_pages
       zone_balance_memory
        try_to_free_pages
         shrink_mmap
          try_to_free_buffers
           wakeup_bdflush(0 = don't block)
         swap_out
    block_prepare_write
     create_empty_buffers
      create_buffers(async)
       run_task_queue(tq_disk)
       wait_event(buffer_wait, ..)
     ext2_get_block
     ll_rw_block(loop dev owned bh)
     wait_on_buffer(loop dev owned bh)
    generic_commit_write
     __block_commit_write
      atomic_set_buffer_dirty
      mark_dirty
      balance_dirty
       wakeup_bdflush(0 or 1)

.. and gave up :-) Maybe what I should really be doing is writing some
documentation as I go along which shows which functions are re-entrant and
which aren't.

-- 
If it's tourist season, why can't we shoot them?

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Mar 31 2000 - 21:00:17 EST