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.
|