A massively parallel copy, and some users of dbench reported a hung
machine with xfs. Tracked this down to a memory allocation causing
reentry to xfs - from within a transaction which will eventually deadlock.
Fixing this required some core kernel changes, but they are minor
and do not affect the code executed for other filesystems at all.
Date: Mon Oct 1 11:59:24 PDT 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:103688a
linux/kernel/ksyms.c - 1.111
- export icreate instead of icreate4
linux/include/linux/fs.h - 1.121
- Remove icreate4, change prototype for icreate to include a gfp_mask
linux/fs/inode.c - 1.54
- Allow allocate_inode to take a gfp_mask so XFS can tell it not
to call back into the filesystem. Fold icreate4 and icreate into
one function - we never use the extra arguments. Add the grp_mask
to the icreate call, and use GFP_KERNEL from the iget call.
linux/fs/xfs/xfs_iget.c - 1.148
- Pass SLAB_KERNEL or SLAB_NOFS into icreate depending on being in a
transaction or not.
linux/fs/xfs/linux/xfs_vnode.c - 1.67
- Call icreate with a gfp_mask argument
|