1. 11 Jul, 2003 26 commits
  2. 10 Jul, 2003 14 commits
    • Miles Bader's avatar
      [PATCH] show_stack changes for v850 · ccfd6724
      Miles Bader authored
      ccfd6724
    • Miles Bader's avatar
      [PATCH] More irqreturn_t changes for v850 · ab48a939
      Miles Bader authored
      ab48a939
    • Miles Bader's avatar
      [PATCH] Use <asm-generic/statsfs.h> on v850 · 599cd887
      Miles Bader authored
      599cd887
    • Jens Axboe's avatar
      [PATCH] disk stats accounting fix · b8ac7066
      Jens Axboe authored
      We should only account file system requests, ones originating from
      __make_request(). Otherwise it skews the counters and they go negative
      really fast.
      b8ac7066
    • Andrew Morton's avatar
      [PATCH] epoll-per-fd fix · 9cbdaa44
      Andrew Morton authored
      From: Davide Libenzi <davidel@xmailserver.org>
      
      Fix epoll to allow pushing of multiple file descriptors sharing the same
      kernel's file*
      9cbdaa44
    • Andrew Morton's avatar
      [PATCH] devfs deadlock fix · 1cf2ec10
      Andrew Morton authored
      From: Andrey Borzenkov <arvidjaar@mail.ru>
      
      I finally hit a painfully trivial way to reproduce another long standing devfs
      problem - deadlock between devfs_lookup and devfs_d_revalidate_wait. When
      devfs_lookup releases directory i_sem devfs_d_revalidate_wait grabs it (it
      happens not for every path) and goes to wait to be waked up. Unfortunately,
      devfs_lookup attempts to acquire directory i_sem before ever waking it up ...
      
      To reproduce (2.5.74 UP or SMP - does not matter, single CPU system)
      
      ls /dev/foo & rm -f /dev/foo &
      
      or possibly in a loop but then it easily fills up process table. In my case it
      hangs 100% reliably - on 2.5 OR 2.4.
      
      The current fix is to move re-acquire of i_sem after all
      devfs_d_revalidate_wait waiters have been waked up.  Much better fix would be
      to ensure that ->d_revalidate either is always called under i_sem or always
      without.  But that means the very heart of VFS and I do not dare to touch it.
      
      The fix has been tested on 2.4 (and is part of unofficial Mandrake Club
      kernel); I expected the same bug is in 2.5; I just was stupid not seeing the
      way to reproduce it before.
      1cf2ec10
    • Andrew Morton's avatar
      [PATCH] devfs oops fix · 934acf6c
      Andrew Morton authored
      From: Andrey Borzenkov <arvidjaar@mail.ru>
      
      Doing concurrent lookups for the same name in devfs with devfsd and modules
      enabled may result in stack coruption.
      
      When devfs_lookup needs to call devfsd it arranges for other lookups for the
      same name to wait. It is using local variable as wait queue head. After
      devfsd returns devfs_lookup wakes up all waiters and returns. Unfortunately
      there is no garantee all waiters will actually get chance to run and clean up
      before devfs_lookup returns. so some of them attempt to access already freed
      storage on stack.
      
      It is trivial to trigger with SMP kernel (I have single-CPU system if it
      matters) doing
      
      while true
      do
        ls /dev/foo &
      done
      
      Without spinlock debug system usually hung dead with reset button as the only
      possibility.
      
      I was not able to reproduce it on 2.4 on single-CPU system - in 2.4
      devfs_d_revalidate_wait does not attempt to remove itself from wait queue
      so it appears to be safe.
      
      The patch makes lookup struct be allocated from heap and adds reference
      counter to free it when no more needed.
      934acf6c
    • Andrew Morton's avatar
      [PATCH] Fix yenta-socket oops · e59d9afb
      Andrew Morton authored
      From: Russell King <rmk@arm.linux.org.uk>
      
      Interrupts can sometimes occur before the socket thread is started.
      e59d9afb
    • Andrew Morton's avatar
      [PATCH] yenta-socket initialisation fix · 85cea662
      Andrew Morton authored
      From: Daniel Ritz <daniel.ritz@gmx.ch>
      
      init_socket() enables interrupts, and the interrupt handler does a wakeup.
      Let's initialise that waitqueue head before turning on the interrupts.
      85cea662
    • Andrew Morton's avatar
      [PATCH] oom killer fixes · 21f8b968
      Andrew Morton authored
      From: William Lee Irwin III <wli@holomorphy.com>
      
      There are reports of kernel threads being killed by the oomkiller.  We
      think this is because the oom killer tries to kill a task after it has
      exitted and set its ->mm to zero.  The oom killer will then try to kill all
      other tasks which have a null ->mm.
      
      Attempt to detect that case and fix it up.
      21f8b968
    • Andrew Morton's avatar
      [PATCH] ext3: sync_fs() fix · af738c8a
      Andrew Morton authored
      From: Alex Tomas <bzzz@tmi.comex.ru>
      
      fsync_super() calls ->sync_fs() just after ->write_super().  But
      write_super() will start a commit.  In this case, ext3_sync_fs() will not
      itself start a commit, and it hence forgets to wait on the commit which
      ext3_write_super() started.
      
      Fix that up by making journal_start_commit() return the transaction ID of
      any currently-running transaction.
      af738c8a
    • Andrew Morton's avatar
      [PATCH] JBD: transaction buffer accounting fix · 4152cdfa
      Andrew Morton authored
      From: Alex Tomas <bzzz@tmi.comex.ru>
      
      start_this_handle() takes into account t_outstanding_credits when calculating
      log free space, but journal_next_log_block() accounts for blocks being logged
      also.  Hence, blocks are accounting twice.  This effectively reduces the
      amount of log space available to transactions and forces more commits.
      
      Fix it by decrementing t_outstanding_credits each time we allocate a new
      journal block.
      4152cdfa
    • Andrew Morton's avatar
      [PATCH] JBD: checkpointing optimisations · a2df663d
      Andrew Morton authored
      From: Alex Tomas <bzzz@tmi.comex.ru>
      
      Some transaction checkpointing improvements for the JBD commit phase.  Decent
      speedups:
      
      creation of 500K files in single dir (with htree, of course):
       before: 4m16.094s, 4m12.035s, 4m11.911s
       after:  1m41.364s, 1m43.461s, 1m45.189s
      
      removal of 500K files in single dir:
       before: 43m50.161s
       after:  38m45.510s
      
      
      - Make __log_wait_for_space() recalculate the needed blocks because journal
        free space changes during commit
      
      - Make log_do_checkpoint() starts scanning from the oldest transaction
      
      - Make log_do_checkpoint() stop scanning if a transaction gets dropped.
        The caller will reevaluate the transaction state and decide whether more
        space needs to be generated in the log.
      
        The effect of this is to smooth out the I/O patterns, avoid the huge
        stop-and-go which currently happens when forced checkpointing writes out
        and waits upon 3/4 of the journal's size worth of data.
      a2df663d
    • Andrew Morton's avatar
      [PATCH] nbd: make nbd and block layer agree about device and · 20c52ab8
      Andrew Morton authored
      From: Paul Clements <Paul.Clements@SteelEye.com>
      
      Ensure that nbd and the block layer agree about device block sizes and total
      device sizes.
      20c52ab8