1. 02 9月, 2009 2 次提交
  2. 01 9月, 2009 4 次提交
  3. 18 8月, 2009 1 次提交
    • C
      xfs: fix locking in xfs_iget_cache_hit · a022fe09
      Christoph Hellwig 提交于
      The locking in xfs_iget_cache_hit currently has numerous problems:
      
       - we clear the reclaim tag without i_flags_lock which protects
         modifications to it
       - we call inode_init_always which can sleep with pag_ici_lock
         held (this is oss.sgi.com BZ #819)
       - we acquire and drop i_flags_lock a lot and thus provide no
         consistency between the various flags we set/clear under it
      
      This patch fixes all that with a major revamp of the locking in
      the function.  The new version acquires i_flags_lock early and
      only drops it once we need to call into inode_init_always or before
      calling xfs_ilock.
      
      This patch fixes a bug seen in the wild where we race modifying the
      reclaim tag.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Reviewed-by: NFelix Blyakher <felixb@sgi.com>
      Reviewed-by: NEric Sandeen <sandeen@sandeen.net>
      Signed-off-by: NFelix Blyakher <felixb@sgi.com>
      a022fe09
  4. 17 8月, 2009 1 次提交
    • C
      xfs: fix locking in xfs_iget_cache_hit · bc990f5c
      Christoph Hellwig 提交于
      The locking in xfs_iget_cache_hit currently has numerous problems:
      
       - we clear the reclaim tag without i_flags_lock which protects
         modifications to it
       - we call inode_init_always which can sleep with pag_ici_lock
         held (this is oss.sgi.com BZ #819)
       - we acquire and drop i_flags_lock a lot and thus provide no
         consistency between the various flags we set/clear under it
      
      This patch fixes all that with a major revamp of the locking in
      the function.  The new version acquires i_flags_lock early and
      only drops it once we need to call into inode_init_always or before
      calling xfs_ilock.
      
      This patch fixes a bug seen in the wild where we race modifying the
      reclaim tag.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Reviewed-by: NFelix Blyakher <felixb@sgi.com>
      Reviewed-by: NEric Sandeen <sandeen@sandeen.net>
      Signed-off-by: NFelix Blyakher <felixb@sgi.com>
      bc990f5c
  5. 12 8月, 2009 15 次提交
  6. 11 8月, 2009 9 次提交
  7. 08 8月, 2009 2 次提交
  8. 31 7月, 2009 4 次提交
  9. 27 7月, 2009 1 次提交
    • E
      xfs: reduce bmv_count in xfs_vn_fiemap · 5c04c78a
      Eric Sandeen 提交于
      commit 6321e3ed caused
      the full bmv_count's worth of getbmapx structures to get
      allocated; telling it to do MAXEXTNUM was a bit insane,
      resulting in ENOMEM every time.
      
      Chop it down to something reasonable, the number of slots
      in the caller's input buffer.  If this is too large the
      caller may get ENOMEM but the reason should not be a
      mystery, and they can try again with something smaller.
      
      We add 1 to the value because in the normal getbmap
      world, bmv_count includes the header and xfs_getbmap does:
      
              nex = bmv->bmv_count - 1;
              if (nex <= 0)
                      return XFS_ERROR(EINVAL);
      Signed-off-by: NEric Sandeen <sandeen@sandeen.net>
      Reviewed-by: NOlaf Weber <olaf@sgi.com>
      Reviewed-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NFelix Blyakher <felixb@sgi.com>
      5c04c78a
  10. 13 7月, 2009 1 次提交