I've been trying to fix the old splice iolock lock inversion issue in XFS and started looking over the splice code a little more for it. It seems like the root of all evil is that we try to nest i_mutex inside the pipe_lock instead of outside of it, and I can't find any good reason for that. Does anyone remember why it went this way initially? By fixing that and a few minor issues we can not only fix this issue nicely in XFS, but also get rid of various bits of code duplication, and poking into splice internals by the ocfs2 splice_write path. Btw, does anyone have a good test suite for splice functionality? xfstests coverage exits but is not very extensive. b/fs/ocfs2/file.c | 2 b/fs/splice.c | 5 +- b/fs/xfs/xfs_file.c | 26 +++++----- b/include/linux/splice.h | 2 fs/ocfs2/file.c | 78 +++++++++---------------------- fs/splice.c | 115 +++++++++++++---------------------------------- include/linux/splice.h | 7 -- 7 files changed, 76 insertions(+), 159 deletions(-) _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs