Version 2 of this series changes only patch #3. POSIX semaphores
are now used instead of rolling our own, as suggested by Christoph.
We lose the ability to count the number of waiting threads, which
was used in some asserts. There was adequate coverage in related
asserts, so this was deemed acceptable.
This series resurrects the IRIX multi-stream support for splitting a
backup among several output files/tapes. This offers some nice
performance improvements, particularly in xfsrestore where a single
stream often cannot keep the filesystem/disks busy. I've observed
a 1.7x improvement on a backup and a 5x improvement on restore.
I have a couple of xfstests for this, and will submit those once
a few outstanding xfsdump test patches have been reviewed.
There's a bit more work to do:
- Now that xfsdump has threads once again, the tape I/O ring
buffer support can be enabled. This series leaves it disabled
so that more testing can be done in that area.
- Currently the stream split points are determined by doing an
extra inode scan. This is unchanged from how it was done on
IRIX. I'd like to change this so that enough info is kept from
the initial inode scan to determine appropriate split points
without an additional scan.
- You may notice in the last patch of this series that a lot
of "miniroot" references also look at whether or not the dump
is to a pipe. Now that the "miniroot" checks are gone, it's
possible to clean up the pipe-related code too. I've got a
separate patch series for that which I'll submit later.