xfs: don't hold onto reserved blocks on remount,ro
authorDave Chinner <david@fromorbit.com>
Tue, 26 Jan 2010 04:08:49 +0000 (15:08 +1100)
committerDave Chinner <david@fromorbit.com>
Tue, 26 Jan 2010 04:08:49 +0000 (15:08 +1100)
commitcbe132a8bdcff0f9afd9060948fb50597c7400b8
tree2bf70f1520b6cc60fb3097763dde24600466369d
parent9b00f30762fe9f914eb6e03057a616ed63a4e8ca
xfs: don't hold onto reserved blocks on remount,ro

If we hold onto reserved blocks when doing a remount,ro we end
up writing the blocks used count to disk that includes the reserved
blocks. Reserved blocks are not actually used, so this results in
the values in the superblock being incorrect.

Hence if we run xfs_check or xfs_repair -n while the filesystem is
mounted remount,ro we end up with an inconsistent filesystem being
reported. Also, running xfs_copy on the remount,ro filesystem will
result in an inconsistent image being generated.

To fix this, unreserve the blocks when doing the remount,ro, and
reserved them again on remount,rw. This way a remount,ro filesystem
will appear consistent on disk to all utilities.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/xfs/linux-2.6/xfs_super.c
fs/xfs/xfs_mount.h