xfs
[Top] [All Lists]

TAKE 893003 - Merge over latest inode hang fixes

Subject: TAKE 893003 - Merge over latest inode hang fixes
From: Russell Cattelan <cattelan@xxxxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 13 Jun 2003 11:33:24 -0500
Sender: linux-xfs-bounce@xxxxxxxxxxx
Date:  Fri Jun 13 09:33:06 PDT 2003
Workarea:  chuckle.americas.sgi.com:/go/xfs2/XFS/x2.4-xfs-r1.3
Merged by:  cattelan
Merged mods:  
2.4.x-xfs:slinx:150782a,2.4.x-xfs:slinx:150885a,2.4.x-xfs:slinx:151120a
              2.4.x-xfs:slinx:151123a,2.4.x-xfs:slinx:150953a

The following file(s) were checked into:
  bonnie.engr.sgi.com:/isms/slinx/2.4.x-xfs-r1.3


Modid:  2.4.x-xfs-r1.3:slinx:151139a
linux/fs/xfs/xfs_vnodeops.c - 1.592
        - Merge of 2.4.x-xfs:slinx:151123a originally by lord on 06/12/03
          Fix deadlock between xfs_finish_reclaim and xfs_iget_core. An inode 
being
          reclaimed and removed from memory by one thread while another thread
          is attempting to reuse the inode and bring it back to life. There
          was a window between the iget starting to reuse the inode and the
          reclaim starting. Close the window by marking the inode as being
          reused under the hash lock, and by abandoning the reclaim if this
          is detected when it obtains the hash lock.
          Set XFS_IRECLAIMABLE when disconnecting an xfs_inode from the linux 
          inode. This is safe from the iget path because of the I_LOCK which is
          held in both cases. In xfs_finish_reclaim, after obtaining the hash
          lock, check that XFS_IRECLAIMABLE is set in the case where there is
          no vnode, abandon the reclaim if it is not. We can also reduce the
          locking use in a couple of paths here.
          Merge of 2.4.x-xfs:slinx:150953a originally by cwf on 06/13/03
          Close window to prevent a file with delayed write extents from being
          converted to a realtime file.
          Merge of grove2:irix:150953a by lord.
          add check to xfs_setattr to avoid file with delalloc setting rt flag

linux/fs/xfs/xfs_iget.c - 1.189
        - Merge of 2.4.x-xfs:slinx:151123a originally by lord on 06/12/03
          Fix deadlock between xfs_finish_reclaim and xfs_iget_core. An inode 
being
          reclaimed and removed from memory by one thread while another thread
          is attempting to reuse the inode and bring it back to life. There
          was a window between the iget starting to reuse the inode and the
          reclaim starting. Close the window by marking the inode as being
          reused under the hash lock, and by abandoning the reclaim if this
          is detected when it obtains the hash lock.
          When a candidate inode is found in xfs_iget_core which has the 
potential
          to be reclaimed, remove the XFS_IRECLAIMABLE flag under the inode hash
          lock.

linux/fs/xfs/xfs_inode.c - 1.377
        - Merge of 2.4.x-xfs:slinx:151120a originally by lord on 06/12/03
          Fix deadlock caused by race between xfs_iunpin marking an inode
          dirty, and the same inode being reallocated and reused by create.
          The unlock_new_inode and mark_inode_dirty manage to corrupt the
          i_state flags and end up leaving I_LOCK|I_NEW set.
          do not call mark_inode_dirty in xfs_iunpin when I_NEW is set,
          it is in the process of going into a transaction which will
          also mark it dirty. 

linux/fs/xfs/xfs_inode.h - 1.182
        - Merge of 2.4.x-xfs:slinx:151123a originally by lord on 06/12/03
          Fix deadlock between xfs_finish_reclaim and xfs_iget_core. An inode 
being
          reclaimed and removed from memory by one thread while another thread
          is attempting to reuse the inode and bring it back to life. There
          was a window between the iget starting to reuse the inode and the
          reclaim starting. Close the window by marking the inode as being
          reused under the hash lock, and by abandoning the reclaim if this
          is detected when it obtains the hash lock.
          Define XFS_IRECLAIMABLE

linux/fs/xfs/linux/xfs_sysctl.h - 1.13
        - Merge of 2.4.x-xfs:slinx:150782a originally by lord on 06/10/03
          break dependency between CONFIG_PROCFS and CONFIG_SYSCTL in xfs
          move clear stats sysctl to the end

linux/fs/xfs/linux/xfs_sysctl.c - 1.20
        - Merge of 2.4.x-xfs:slinx:150782a originally by lord on 06/10/03
          break dependency between CONFIG_PROCFS and CONFIG_SYSCTL in xfs
          make the clear stats interface conditional on procfs, the only
          way we display stats is via procfs anyway.

linux/fs/xfs/pagebuf/page_buf.c - 1.120
        - Merge of 2.4.x-xfs:slinx:150885a originally by lord on 06/11/03
          Fix O_DIRECT using uninitialized memory, user space is passing in the 
same
          zero page at lots of addresses. The xfs code was locking the user 
pages
          which is unneccessary, end result deadlock on ourselves.
          In pagebuf_lookup, create a pagebuf which is lockable so we
          do not lock the pages within it during I/O. Only O_DIRECT
          does I/O on this type of pagebuf.



<Prev in Thread] Current Thread [Next in Thread>
  • TAKE 893003 - Merge over latest inode hang fixes, Russell Cattelan <=