There was a case where two cpus can be looking up the same inode at once,
they both allocate the inode, one of them gets to tear it down. The
problem is the teardown code was incorrect on Linux.
Date: Mon Mar 26 08:16:56 PST 2001
Workarea: jen.americas.sgi.com:/src/lord/xfs-linux.2.4
The following file(s) were checked into:
bonnie.engr.sgi.com:/isms/slinx/2.4.x-xfs
Modid: 2.4.x-xfs:slinx:90851a
linux/fs/xfs/xfs_iget.c - 1.132
- Change xfs_iget to call vn_free rather than vn_rele in a race case
where two threads create the same inode at once.
linux/fs/xfs/linux/xfs_vnode.c - 1.52
- Change vn_free to clear the superblock pointer in the inode and call
iput,
this is called with a partitially initialized inode and we do not
want to
call the super methods to free it, that causes us to die in xfs.
|