aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/tree-log.c
diff options
context:
space:
mode:
authorNaohiro Aota <[email protected]>2021-06-17 04:56:18 +0000
committerDavid Sterba <[email protected]>2021-06-17 09:12:14 +0000
commitf9f28e5bd0baee9708c9011897196f06ae3a2733 (patch)
tree1e0fdbb85996e5a63d09334a413435dc1062c180 /fs/btrfs/tree-log.c
parentbtrfs: promote debugging asserts to full-fledged checks in validate_super (diff)
downloadkernel-f9f28e5bd0baee9708c9011897196f06ae3a2733.tar.gz
kernel-f9f28e5bd0baee9708c9011897196f06ae3a2733.zip
btrfs: zoned: fix negative space_info->bytes_readonly
Consider we have a using block group on zoned btrfs. |<- ZU ->|<- used ->|<---free--->| `- Alloc offset ZU: Zone unusable Marking the block group read-only will migrate the zone unusable bytes to the read-only bytes. So, we will have this. |<- RO ->|<- used ->|<--- RO --->| RO: Read only When marking it back to read-write, btrfs_dec_block_group_ro() subtracts the above "RO" bytes from the space_info->bytes_readonly. And, it moves the zone unusable bytes back and again subtracts those bytes from the space_info->bytes_readonly, leading to negative bytes_readonly. This can be observed in the output as eg.: Data, single: total=512.00MiB, used=165.21MiB, zone_unusable=16.00EiB Data, single: total=536870912, used=173256704, zone_unusable=18446744073603186688 This commit fixes the issue by reordering the operations. Link: https://github.com/naota/linux/issues/37 Reported-by: David Sterba <[email protected]> Fixes: 169e0da91a21 ("btrfs: zoned: track unusable bytes for zones") CC: [email protected] # 5.12+ Reviewed-by: Johannes Thumshirn <[email protected]> Signed-off-by: Naohiro Aota <[email protected]> Signed-off-by: David Sterba <[email protected]>
Diffstat (limited to 'fs/btrfs/tree-log.c')
0 files changed, 0 insertions, 0 deletions