1. 13 8月, 2008 11 次提交
  2. 28 7月, 2008 18 次提交
  3. 27 7月, 2008 1 次提交
  4. 29 4月, 2008 1 次提交
  5. 18 4月, 2008 4 次提交
  6. 29 2月, 2008 1 次提交
  7. 07 2月, 2008 4 次提交
    • L
      [XFS] add __init/__exit mark to specific init/cleanup functions · de2eeea6
      Lachlan McIlroy 提交于
      SGI-PV: 971186
      SGI-Modid: xfs-linux-melb:xfs-kern:30459a
      Signed-off-by: NLachlan McIlroy <lachlan@sgi.com>
      Signed-off-by: NDenis Cheng <crquan@gmail.com>
      de2eeea6
    • C
      [XFS] kill xfs_root · cbc89dcf
      Christoph Hellwig 提交于
      The only caller (xfs_fs_fill_super) can simplify call igrab on the root
      inode.
      
      SGI-PV: 971186
      SGI-Modid: xfs-linux-melb:xfs-kern:30393a
      Signed-off-by: NChristoph Hellwig <hch@infradead.org>
      Signed-off-by: NLachlan McIlroy <lachlan@sgi.com>
      cbc89dcf
    • C
      [XFS] stop updating inode->i_blocks · 222096ae
      Christoph Hellwig 提交于
      The VFS doesn't use i_blocks, it's only used by generic_fillattr and the
      generic quota code which XFS doesn't use. In XFS there is one use to check
      whether we have an inline or out of line sumlink, but we can replace that
      with a check of the XFS_IFINLINE inode flag.
      
      SGI-PV: 971186
      SGI-Modid: xfs-linux-melb:xfs-kern:30391a
      Signed-off-by: NChristoph Hellwig <hch@infradead.org>
      Signed-off-by: NLachlan McIlroy <lachlan@sgi.com>
      222096ae
    • D
      [XFS] Move AIL pushing into it's own thread · 249a8c11
      David Chinner 提交于
      When many hundreds to thousands of threads all try to do simultaneous
      transactions and the log is in a tail-pushing situation (i.e. full), we
      can get multiple threads walking the AIL list and contending on the AIL
      lock.
      
      The AIL push is, in effect, a simple I/O dispatch algorithm complicated by
      the ordering constraints placed on it by the transaction subsystem. It
      really does not need multiple threads to push on it - even when only a
      single CPU is pushing the AIL, it can push the I/O out far faster that
      pretty much any disk subsystem can handle.
      
      So, to avoid contention problems stemming from multiple list walkers, move
      the list walk off into another thread and simply provide a "target" to
      push to. When a thread requires a push, it sets the target and wakes the
      push thread, then goes to sleep waiting for the required amount of space
      to become available in the log.
      
      This mechanism should also be a lot fairer under heavy load as the waiters
      will queue in arrival order, rather than queuing in "who completed a push
      first" order.
      
      Also, by moving the pushing to a separate thread we can do more
      effectively overload detection and prevention as we can keep context from
      loop iteration to loop iteration. That is, we can push only part of the
      list each loop and not have to loop back to the start of the list every
      time we run. This should also help by reducing the number of items we try
      to lock and/or push items that we cannot move.
      
      Note that this patch is not intended to solve the inefficiencies in the
      AIL structure and the associated issues with extremely large list
      contents. That needs to be addresses separately; parallel access would
      cause problems to any new structure as well, so I'm only aiming to isolate
      the structure from unbounded parallelism here.
      
      SGI-PV: 972759
      SGI-Modid: xfs-linux-melb:xfs-kern:30371a
      Signed-off-by: NDavid Chinner <dgc@sgi.com>
      Signed-off-by: NLachlan McIlroy <lachlan@sgi.com>
      249a8c11