Hi, I just used xfs_fsr the first time under a 3.8-rc kernel and was spammed with an enormous amount of "XFS_IOC_SWAPEXT failed: ino=56118: Invalid argument" messages. I found the thread http://marc.info/?t=135727980600001&r=1&w=2 and went to check the kernel sources for these additional checks, because I wanted to know what was allowed earlier and is now failing. I found commit fb59581404ab7ec5075299065c22cb211a9262a9: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commitdiff;h=fb59581404ab7ec5075299065c22cb211a9262a9#patch2 --- a/fs/xfs/xfs_dfrag.c +++ b/fs/xfs/xfs_dfrag.c @@ -246,12 +246,10 @@ xfs_swap_extents( goto out_unlock; } - if (VN_CACHED(VFS_I(tip)) != 0) { - error = xfs_flushinval_pages(tip, 0, -1, - FI_REMAPF_LOCKED); - if (error) - goto out_unlock; - } + error = -filemap_write_and_wait(VFS_I(ip)->i_mapping); + if (error) + goto out_unlock; + truncate_pagecache_range(VFS_I(ip), 0, -1); That looks really wrong to me. The old code was calling xfs_flushinval_pages() for *tip*, but the new code is working on *ip*. Was that change really intended? Is looks unintentional and is not mentioned in the commit comment... Thanks for looking / correcting me if I'm missing something obvious, but I can't find a reason for this change... Torsten _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs