]> git.baikalelectronics.ru Git - kernel.git/commit
Btrfs: fix the free space write out failure when there is no data space
authorMiao Xie <miaox@cn.fujitsu.com>
Fri, 25 Oct 2013 09:33:36 +0000 (17:33 +0800)
committerChris Mason <chris.mason@fusionio.com>
Tue, 12 Nov 2013 03:08:49 +0000 (22:08 -0500)
commitc01f8b648286f206fcd317c9e212f8d0f9beb624
tree8a982bcff082d94b639a57fb35b4e0b10c892edf
parent3deab4a9113daae67e67aad83e6e081786eb16ed
Btrfs: fix the free space write out failure when there is no data space

After running space balance on a new fs, the fs check program outputed the
following warning message:
 free space inode generation (0) did not match free space cache generation (20)

Steps to reproduce:
 # mkfs.btrfs -f <dev>
 # mount <dev> <mnt>
 # btrfs balance start <mnt>
 # umount <mnt>
 # btrfs check <dev>

It was because there was no data space after the space balance, and the free
space write out task didn't try to allocate a new data chunk for the free space
inode when doing the reservation. So the data space reservation failed, and in
order to tell the free space loader that this free space inode could not be
trusted, the generation of the free space inode wasn't updated. Then the check
program found this problem and outputed the above message.

But in fact, it is safe that we try to allocate a new data chunk when we find
the data space is not enough. The patch fixes the above problem by this way.

Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
fs/btrfs/extent-tree.c