]> git.baikalelectronics.ru Git - kernel.git/commit
Btrfs: fix a bug of balance on full multi-disk partitions
authorliubo <liubo2009@cn.fujitsu.com>
Tue, 2 Aug 2011 02:39:03 +0000 (02:39 +0000)
committerChris Mason <chris.mason@oracle.com>
Wed, 17 Aug 2011 01:09:15 +0000 (21:09 -0400)
commit90ed1e96597949e5ce6314c77a3e0e64a670e889
tree49f7197ee14581d800d927e5860de4d62b77f15b
parent12d42d81890fe5c475717540e5c963276ad19aa1
Btrfs: fix a bug of balance on full multi-disk partitions

When balancing, we'll first try to shrink devices for some space,
but if it is working on a full multi-disk partition with raid protection,
we may encounter a bug, that is, while shrinking, total_bytes may be less
than bytes_used, and btrfs may allocate a dev extent that accesses out of
device's bounds.

Then we will not be able to write or read the data which stores at the end
of the device, and get the followings:

device fsid 0939f071-7ea3-46c8-95df-f176d773bfb6 devid 1 transid 10 /dev/sdb5
Btrfs detected SSD devices, enabling SSD mode
btrfs: relocating block group 476315648 flags 9
btrfs: found 4 extents
attempt to access beyond end of device
sdb5: rw=145, want=546176, limit=546147
attempt to access beyond end of device
sdb5: rw=145, want=546304, limit=546147
attempt to access beyond end of device
sdb5: rw=145, want=546432, limit=546147
attempt to access beyond end of device
sdb5: rw=145, want=546560, limit=546147
attempt to access beyond end of device

Signed-off-by: Liu Bo <liubo2009@cn.fujitsu.com>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/volumes.c