]> git.baikalelectronics.ru Git - kernel.git/commit
xfs: disable swap extents ioctl on CRC enabled filesystems
authorDave Chinner <dchinner@redhat.com>
Mon, 27 May 2013 06:38:24 +0000 (16:38 +1000)
committerBen Myers <bpm@sgi.com>
Thu, 30 May 2013 22:20:08 +0000 (17:20 -0500)
commitda1df686fb17ac2cabb3b737fabac3d4296b06e5
treed7862206d6bc85506490ffa80d3e6ac5836a6e09
parent6b4efdd5e33b0bb76e70dc9111b8e16b157cccc2
xfs: disable swap extents ioctl on CRC enabled filesystems

Currently, swapping extents from one inode to another is a simple
act of switching data and attribute forks from one inode to another.
This, unfortunately in no longer so simple with CRC enabled
filesystems as there is owner information embedded into the BMBT
blocks that are swapped between inodes. Hence swapping the forks
between inodes results in the inodes having mapping blocks that
point to the wrong owner and hence are considered corrupt.

To fix this we need an extent tree block or record based swap
algorithm so that the BMBT block owner information can be updated
atomically in the swap transaction. This is a significant piece of
new work, so for the moment simply don't allow swap extent
operations to succeed on CRC enabled filesystems.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Ben Myers <bpm@sgi.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Ben Myers <bpm@sgi.com>
(cherry picked from commit 02f75405a75eadfb072609f6bf839e027de6a29a)
fs/xfs/xfs_dfrag.c