This removes the synchronous transactions from the delete path in
XFS. This work was mostly done by Glen Overby, I am just putting
the code into the Linux tree here.
I have been running this code on my workstation for several weeks without
problems, it has also been in pretty much every kernel I have run stress
tests on for the last month, it appears very solid now.
This was long thought to be the sole cause of slower delete speed in
XFS, this turns out not to be the case, it does help delete speed, but
if you go and delete 30000 files in one go it will not make a large
difference for you. That issue is the next thing being tackled.
This will certainly help SOME of the cases of files full of NULLs
after a crash as one way this happened was a synchronous transaction
forcing an inode modification out to the disk with a new size before
the data was written out.
Steve
Date: Fri Feb 15 12:47:53 PST 2002
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:111915a
linux/fs/xfs/xfsidbg.c - 1.172
- Add dumping of new perag structures
linux/fs/xfs/xfs_ag.h - 1.41
- Add a per-AG busy list (xfs_perag_busy_t).
linux/fs/xfs/xfs_trans_priv.h - 1.18
- Prototypes for busy list management.
linux/fs/xfs/xfs_trans_item.c - 1.29
- Transaction busy list management (add, free).
linux/fs/xfs/xfs_mount.c - 1.269
- Break up perag structure allocation - it gets too large for big
filesystems
with the new code.
linux/fs/xfs/xfs_inode.c - 1.326
- Remove setting of synchronous transactions where they can be replaced
by using the busy list.
linux/fs/xfs/xfs_trans.c - 1.129
- Add to each transaction a list of per-AG busy list entries. When the
transaction commits, clear those entries.
linux/fs/xfs/xfs_trans.h - 1.110
- Add to the transaction structure a list of per-AG busy list entries.
linux/fs/xfs/xfs_alloc.c - 1.145
- er-AG busy list management. Search per-AG busy list on allocation,
remove setting of synchronous transactions where the busy list will
take over. Mark removed blocks in the busy list.
linux/fs/xfs/xfs_alloc.h - 1.50
- Prototypes for per-AG busy list management & busy list ktrace
definitions.
linux/fs/xfs/xfs_bmap.c - 1.280
- Remove setting of synchronous transactions where they can be replaced
by using the busy list.
|