aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/disk-io.c
diff options
context:
space:
mode:
authorMiao Xie <miaox@cn.fujitsu.com>2014-09-03 09:35:34 -0400
committerChris Mason <clm@fb.com>2014-09-17 16:38:34 -0400
commitce7213c70c37e3a66bc0b50c45edcbfea505f62f (patch)
tree3b458f3f28ae3d69f508b4bd9194a264f74f6f34 /fs/btrfs/disk-io.c
parent935e5cc935bcbf9b3d0dd59fed7dbc0f2ebca6bc (diff)
Btrfs: fix wrong device bytes_used in the super block
device->bytes_used will be changed when allocating a new chunk, and disk_total_size will be changed if resizing is successful. Meanwhile, the on-disk super blocks of the previous transaction might not be updated. Considering the consistency of the metadata in the previous transaction, We should use the size in the previous transaction to check if the super block is beyond the boundary of the device. Though it is not big problem because we don't use it now, but anyway it is better that we make it be consistent with the common metadata, maybe we will use it in the future. Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'fs/btrfs/disk-io.c')
-rw-r--r--fs/btrfs/disk-io.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 0cd18b725554..a224fb9b34a3 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -3446,7 +3446,8 @@ static int write_all_supers(struct btrfs_root *root, int max_mirrors)
3446 btrfs_set_stack_device_id(dev_item, dev->devid); 3446 btrfs_set_stack_device_id(dev_item, dev->devid);
3447 btrfs_set_stack_device_total_bytes(dev_item, 3447 btrfs_set_stack_device_total_bytes(dev_item,
3448 dev->commit_total_bytes); 3448 dev->commit_total_bytes);
3449 btrfs_set_stack_device_bytes_used(dev_item, dev->bytes_used); 3449 btrfs_set_stack_device_bytes_used(dev_item,
3450 dev->commit_bytes_used);
3450 btrfs_set_stack_device_io_align(dev_item, dev->io_align); 3451 btrfs_set_stack_device_io_align(dev_item, dev->io_align);
3451 btrfs_set_stack_device_io_width(dev_item, dev->io_width); 3452 btrfs_set_stack_device_io_width(dev_item, dev->io_width);
3452 btrfs_set_stack_device_sector_size(dev_item, dev->sector_size); 3453 btrfs_set_stack_device_sector_size(dev_item, dev->sector_size);